From 96ac0670cf9944d4912ab25ec885a4bea651443d Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 29 Oct 2001 19:59:54 +0000 Subject: Initial revision git-svn-id: https://svn.apache.org/repos/asf/jakarta/bcel/trunk@152690 13f79535-47bb-0310-9956-ffa450edef68 --- docs/Faculty.java | 28 + docs/HelloWorld.java | 16 + docs/Peephole.java | 82 + docs/appendix.tex | 193 ++ docs/bool.java | 24 + docs/classfile.mdl | 2134 +++++++++++++++++++ docs/diagrams.tex | 19 + docs/eps/classfile.eps | 378 ++++ docs/eps/classfile.fig | 173 ++ docs/eps/classgen.eps | 499 +++++ docs/eps/classgen.fig | 302 +++ docs/eps/classloader.eps | 160 ++ docs/eps/classloader.fig | 47 + docs/eps/constantpool.eps | 399 ++++ docs/eps/constantpool.fig | 211 ++ docs/eps/diagram.fig | 351 ++++ docs/eps/il.eps | 513 +++++ docs/eps/il.fig | 225 ++ docs/eps/instructions.eps | 445 ++++ docs/eps/instructions.fig | 245 +++ docs/eps/javaclass.eps | 525 +++++ docs/eps/javaclass.fig | 353 ++++ docs/eps/jvm.eps | 218 ++ docs/eps/jvm.fig | 62 + docs/generic.mdl | 2860 ++++++++++++++++++++++++++ docs/manual.bib | 185 ++ docs/manual.ps | 4988 +++++++++++++++++++++++++++++++++++++++++++++ docs/manual.tex | 1079 ++++++++++ docs/opt | 24 + docs/unopt | 24 + 30 files changed, 16762 insertions(+) create mode 100644 docs/Faculty.java create mode 100644 docs/HelloWorld.java create mode 100644 docs/Peephole.java create mode 100644 docs/appendix.tex create mode 100644 docs/bool.java create mode 100644 docs/classfile.mdl create mode 100644 docs/diagrams.tex create mode 100644 docs/eps/classfile.eps create mode 100644 docs/eps/classfile.fig create mode 100644 docs/eps/classgen.eps create mode 100644 docs/eps/classgen.fig create mode 100644 docs/eps/classloader.eps create mode 100644 docs/eps/classloader.fig create mode 100644 docs/eps/constantpool.eps create mode 100644 docs/eps/constantpool.fig create mode 100644 docs/eps/diagram.fig create mode 100644 docs/eps/il.eps create mode 100644 docs/eps/il.fig create mode 100644 docs/eps/instructions.eps create mode 100644 docs/eps/instructions.fig create mode 100644 docs/eps/javaclass.eps create mode 100644 docs/eps/javaclass.fig create mode 100644 docs/eps/jvm.eps create mode 100644 docs/eps/jvm.fig create mode 100644 docs/generic.mdl create mode 100644 docs/manual.bib create mode 100644 docs/manual.ps create mode 100644 docs/manual.tex create mode 100644 docs/opt create mode 100644 docs/unopt (limited to 'docs') diff --git a/docs/Faculty.java b/docs/Faculty.java new file mode 100644 index 00000000..c8e7d956 --- /dev/null +++ b/docs/Faculty.java @@ -0,0 +1,28 @@ +import java.io.*; + +public class Faculty { + private static BufferedReader in = new BufferedReader(new + InputStreamReader(System.in)); + + public static final int fac(int n) { + return(n == 0)? 1 : n * fac(n - 1); + } + + public static final int readInt() { + int n = 4711; + + try { + System.out.print("Please enter a number> "); + n = Integer.parseInt(in.readLine()); + } + catch(IOException e1) { System.err.println(e1); } + catch(NumberFormatException e2) { System.err.println(e2); } + + return n; + } + + public static void main(String[] args) { + int n = readInt(); + System.out.println("Faculty of " + n + " is " + fac(n)); + } +} diff --git a/docs/HelloWorld.java b/docs/HelloWorld.java new file mode 100644 index 00000000..1630e21f --- /dev/null +++ b/docs/HelloWorld.java @@ -0,0 +1,16 @@ +import java.io.*; + +public class HelloWorld { + public static void main(String[] argv) { + BufferedReader in = new BufferedReader(new + InputStreamReader(System.in)); + String name = null; + + try { + System.out.print("Please enter your name> "); + name = in.readLine(); + } catch(IOException e) { return; } + + System.out.println("Hello, " + name); + } +} diff --git a/docs/Peephole.java b/docs/Peephole.java new file mode 100644 index 00000000..c8806aed --- /dev/null +++ b/docs/Peephole.java @@ -0,0 +1,82 @@ +import java.io.*; + +import java.util.Iterator; +import org.apache.bcel.classfile.*; +import org.apache.bcel.generic.*; +import org.apache.bcel.Repository; +import org.apache.bcel.util.InstructionFinder; + +public class Peephole { + public static void main(String[] argv) { + try { + /* Load the class from CLASSPATH. + */ + JavaClass clazz = Repository.lookupClass(argv[0]); + Method[] methods = clazz.getMethods(); + ConstantPoolGen cp = new ConstantPoolGen(clazz.getConstantPool()); + + for(int i=0; i < methods.length; i++) { + if(!(methods[i].isAbstract() || methods[i].isNative())) { + MethodGen mg = new MethodGen(methods[i], + clazz.getClassName(), cp); + Method stripped = removeNOPs(mg); + + if(stripped != null) // Any NOPs stripped? + methods[i] = stripped; // Overwrite with stripped method + } + } + + /* Dump the class to _.class + */ + clazz.setConstantPool(cp.getFinalConstantPool()); + clazz.dump(clazz.getClassName() + "_.class"); + } catch(Exception e) { e.printStackTrace(); } + } + + private static final Method removeNOPs(MethodGen mg) { + InstructionList il = mg.getInstructionList(); + InstructionFinder f = new InstructionFinder(il); + String pat = "NOP+"; // Find at least one NOP + InstructionHandle next = null; + int count = 0; + + for(Iterator i = f.search(pat); i.hasNext(); ) { + InstructionHandle[] match = (InstructionHandle[])e.next(); + InstructionHandle first = match[0]; + InstructionHandle last = match[match.length - 1]; + + /* Some nasty Java compilers may add NOP at end of method. + */ + if((next = last.getNext()) == null) + break; + + count += match.length; + + /* Delete NOPs and redirect any references to them to the following + * (non-nop) instruction. + */ + try { + il.delete(first, last); + } catch(TargetLostException e) { + InstructionHandle[] targets = e.getTargets(); + for(int i=0; i < targets.length; i++) { + InstructionTargeter[] targeters = targets[i].getTargeters(); + + for(int j=0; j < targeters.length; j++) + targeters[j].updateTarget(targets[i], next); + } + } + } + + Method m = null; + + if(count > 0) { + System.out.println("Removed " + count + " NOP instructions from method " + + mg.getName()); + m = mg.getMethod(); + } + + il.dispose(); // Reuse instruction handles + return m; + } +} diff --git a/docs/appendix.tex b/docs/appendix.tex new file mode 100644 index 00000000..26cfc74b --- /dev/null +++ b/docs/appendix.tex @@ -0,0 +1,193 @@ +\section{Code examples for the BCEL API}\label{sec:apicg} + +\subsection{HelloWorldBuilder.java} +The following Java program reads a name from the standard input and +prints a friendly ``Hello''. Since the \texttt{readLine()} method may +throw an \texttt{IOException} it is enclosed by a \texttt{try-catch} block. + +{\small \verbatimtabinput{HelloWorld.java}\label{sec:hello}} + +\subsection{HelloWorldBuilder.java} + +We will sketch here how the above Java class can be created from the +scratch using the \jc API. For ease of reading we will +use textual signatures and not create them dynamically. For example, +the signature + +\begin{verbatim} + "(Ljava/lang/String;)Ljava/lang/StringBuffer;" +\end{verbatim} + +would actually be created with + +\begin{verbatim} + Type.getMethodSignature(Type.STRINGBUFFER, new Type[] { Type.STRING }); +\end{verbatim} + +\subsubsection{Initialization:} + +First we create an empty class and an instruction list: + +{\small\begin{verbatim} + ClassGen cg = new ClassGen("HelloWorld", "java.lang.Object", + "", ACC_PUBLIC | ACC_SUPER, + null); + ConstantPoolGen cp = cg.getConstantPool(); // cg creates constant pool + InstructionList il = new InstructionList(); +\end{verbatim}} + +We then create the main method, supplying the method's name and the +symbolic type signature encoded with \texttt{Type} objects. + +{\small\begin{verbatim} + MethodGen mg = new MethodGen(ACC_STATIC | ACC_PUBLIC,// access flags + Type.VOID, // return type + new Type[] { // argument types + new ArrayType(Type.STRING, 1) }, + new String[] { "argv" }, // arg names + "main", "HelloWorld", // method, class + il, cp); + InstructionFactory factory = new InstructionFactory(cg); +\end{verbatim}} + +We define some often use types: + +{\small\begin{verbatim} + ObjectType i_stream = new ObjectType("java.io.InputStream"); + ObjectType p_stream = new ObjectType("java.io.PrintStream"); +\end{verbatim}} + +\subsubsection{Create variables \texttt{in} and \texttt{name}:} + +We call the constructors, i.e. execute +\texttt{BufferedReader(Input\-Stream\-Reader(System.in))}. The reference +to the \texttt{BufferedReader} object stays on top of the stack and is +stored in the newly allocated \texttt{in} variable. + +{\small\begin{verbatim} + il.append(factory.createNew("java.io.BufferedReader")); + il.append(InstructionConstants.DUP); // Use predefined constant + il.append(factory.createNew("java.io.InputStreamReader")); + il.append(InstructionConstants.DUP); + il.append(factory.createFieldAccess("java.lang.System", "in", i_stream, + Constants.GETSTATIC)); + il.append(factory.createInvoke("java.io.InputStreamReader", "", + Type.VOID, new Type[] { i_stream }, + Constants.INVOKESPECIAL)); + il.append(factory.createInvoke("java.io.BufferedReader", "", Type.VOID, + new Type[] {new ObjectType("java.io.Reader")}, + Constants.INVOKESPECIAL)); + + LocalVariableGen lg = + mg.addLocalVariable("in", + new ObjectType("java.io.BufferedReader"), null, null); + int in = lg.getIndex(); + lg.setStart(il.append(new ASTORE(in))); // `i' valid from here +\end{verbatim}} + +Create local variable \texttt{name} and initialize it to \texttt{null}. + +{\small\begin{verbatim} + lg = mg.addLocalVariable("name", Type.STRING, null, null); + int name = lg.getIndex(); + il.append(InstructionConstants.ACONST_NULL); + lg.setStart(il.append(new ASTORE(name))); // `name' valid from here +\end{verbatim}} + +\subsubsection{Create try-catch block} + +We remember the start of the block, read a line from the standard +input and store it into the variable \texttt{name}. + +{\small\begin{verbatim} + InstructionHandle try_start = + il.append(factory.createFieldAccess("java.lang.System", "out", p_stream, + Constants.GETSTATIC)); + + il.append(new PUSH(cp, "Please enter your name> ")); + il.append(factory.createInvoke("java.io.PrintStream", "print", Type.VOID, + new Type[] { Type.STRING }, + Constants.INVOKEVIRTUAL)); + il.append(new ALOAD(in)); + il.append(factory.createInvoke("java.io.BufferedReader", "readLine", + Type.STRING, Type.NO_ARGS, + Constants.INVOKEVIRTUAL)); + il.append(new ASTORE(name)); +\end{verbatim}} + +Upon normal execution we jump behind exception handler, the target +address is not known yet. + +{\small\begin{verbatim} + GOTO g = new GOTO(null); + InstructionHandle try_end = il.append(g); +\end{verbatim}} + +We add the exception handler which simply returns from the method. + +{\small\begin{verbatim} + InstructionHandle handler = il.append(InstructionConstants.RETURN); + mg.addExceptionHandler(try_start, try_end, handler, "java.io.IOException"); +\end{verbatim}} + +``Normal'' code continues, now we can set the branch target of the GOTO. + +{\small\begin{verbatim} + InstructionHandle ih = + il.append(factory.createFieldAccess("java.lang.System", "out", p_stream, + Constants.GETSTATIC)); + g.setTarget(ih); +\end{verbatim}} + +\subsubsection{Printing "Hello"} + +String concatenation compiles to \texttt{StringBuffer} operations. + +{\small\begin{verbatim} + il.append(factory.createNew(Type.STRINGBUFFER)); + il.append(InstructionConstants.DUP); + il.append(new PUSH(cp, "Hello, ")); + il.append(factory.createInvoke("java.lang.StringBuffer", "", + Type.VOID, new Type[] { Type.STRING }, + Constants.INVOKESPECIAL)); + il.append(new ALOAD(name)); + il.append(factory.createInvoke("java.lang.StringBuffer", "append", + Type.STRINGBUFFER, new Type[] { Type.STRING }, + Constants.INVOKEVIRTUAL)); + il.append(factory.createInvoke("java.lang.StringBuffer", "toString", + Type.STRING, Type.NO_ARGS, + Constants.INVOKEVIRTUAL)); + + il.append(factory.createInvoke("java.io.PrintStream", "println", + Type.VOID, new Type[] { Type.STRING }, + Constants.INVOKEVIRTUAL)); + il.append(InstructionConstants.RETURN); +\end{verbatim}} + +\subsubsection{Finalization} + +Finally, we have to set the stack size, which normally would be +computed on the fly and add a default constructor method to the class, +which is empty in this case. + +{\small\begin{verbatim} + mg.setMaxStack(5); + cg.addMethod(mg.getMethod()); + il.dispose(); // Allow instruction handles to be reused + cg.addEmptyConstructor(ACC_PUBLIC); +\end{verbatim}} + +Last but not least we dump the \texttt{JavaClass} object to a file. + +{\small\begin{verbatim} + try { + cg.getJavaClass().dump("HelloWorld.class"); + } catch(java.io.IOException e) { System.err.println(e); } +\end{verbatim}} + +\subsection{Peephole.java} + +This class implements a simple peephole optimizer that removes any NOP +instructions from the given class. + +{\small\verbatimtabinput{Peephole.java}}\label{sec:nop} diff --git a/docs/bool.java b/docs/bool.java new file mode 100644 index 00000000..cf517ea0 --- /dev/null +++ b/docs/bool.java @@ -0,0 +1,24 @@ + InstructionList il = new InstructionList(); + ... + CodeConstraint constraint = new CodeConstraint() { + public boolean checkCode(InstructionHandle[] match) { + IfInstruction if1 = (IfInstruction)match[0].getInstruction(); + GOTO g = (GOTO)match[2].getInstruction(); + return (if1.getTarget() == match[3]) && + (g.getTarget() == match[4]); + } + }; + FindPattern f = new FindPattern(il); + String pat = "`IfInstruction'`ICONST_0'`GOTO'`ICONST_1'" + + "`NOP'(`IFEQ'|`IFNE')"; + InstructionHandle[] match; + for(InstructionHandle ih = f.search(pat, constraint); + ih != null; ih = f.search(pat, match[0], constraint)) { + match = f.getMatch(); // Constraint already checked + ... + match[0].setTarget(match[5].getTarget()); // Update target + ... + try { + il.delete(match[1], match[5]); + } catch(TargetLostException e) { ... } + } diff --git a/docs/classfile.mdl b/docs/classfile.mdl new file mode 100644 index 00000000..8035b380 --- /dev/null +++ b/docs/classfile.mdl @@ -0,0 +1,2134 @@ + +(object Petal + version 42 + _written "Rose 4.5.8054a" + charSet 0) + +(object Design "Logical View" + is_unit TRUE + is_loaded TRUE + defaults (object defaults + rightMargin 0.000000 + leftMargin 0.000000 + topMargin 0.000000 + bottomMargin 0.000000 + pageOverlap 0.000000 + clipIconLabels TRUE + autoResize TRUE + snapToGrid TRUE + gridX 16 + gridY 16 + defaultFont (object Font + size 10 + face "Arial" + bold FALSE + italics FALSE + underline FALSE + strike FALSE + color 0 + default_color TRUE) + showMessageNum 1 + showClassOfObject TRUE + notation "Unified") + root_usecase_package (object Class_Category "Use Case View" + quid "36597149004C" + exportControl "Public" + global TRUE + logical_models (list unit_reference_list) + logical_presentations (list unit_reference_list + (object UseCaseDiagram "Main" + quid "3659714A03A0" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + root_category (object Class_Category "Logical View" + quid "36597149004B" + exportControl "Public" + global TRUE + subsystem "Component View" + quidu "365971490054" + logical_models (list unit_reference_list + (object Class "JavaClass" + quid "3659716E02C4" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3783415D015E" + supplier "Logical View::AccessFlags" + quidu "3783404E0032")) + operations (list Operations + (object Operation "getInterfaceNames" + quid "365973DC00DE" + result "String[]" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "getSuperclassName" + quid "365974050213" + result "String" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "Field" + quid "3659719C025C" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "378340240028" + supplier "Logical View::FieldOrMethod" + quidu "37833DF6035A"))) + (object Class "Method" + quid "365971AB002D" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3783403702BA" + supplier "Logical View::FieldOrMethod" + quidu "37833DF6035A"))) + (object Class "Attribute" + quid "365974430259") + (object Class "Code" + quid "3659744C02AC" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597457033E" + stereotype "Method attribute" + supplier "Logical View::Attribute" + quidu "365974430259")) + operations (list Operations + (object Operation "getCode" + quid "365977B9022A" + result "byte[]" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + class_attributes (list class_attribute_list + (object ClassAttribute "max_stack" + quid "3659775703CE" + type "int") + (object ClassAttribute "max_locals" + quid "36597761015C" + type "int") + (object ClassAttribute "exception_handlers" + quid "3659837E02EB"))) + (object Class "LineNumberTable" + quid "365974D401FD" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659752A01B0" + stereotype "Code attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "LocalVariableTable" + quid "365974E4034A" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365975320072" + stereotype "Code attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "SourceFile" + quid "365974F201D8" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659753B002E" + stereotype "Class attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "InnerClasses" + quid "3659751A0398" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659756B010A" + stereotype "Class attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "ConstantPool" + quid "365976440134" + operations (list Operations + (object Operation "getConstant" + quid "365987690117" + result "Constant" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "Constant" + quid "3659764E01CE") + (object Class "ConstantCP" + quid "365976530348" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597AFA0160" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ExceptionTable" + quid "365976ED0187" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659781D03A1" + stereotype "Method attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "ConstantInterfaceMethodref" + quid "36597B2E03DC" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9E870042" + supplier "Logical View::ConstantCP" + quidu "365976530348"))) + (object Class "ConstantMethodref" + quid "36597B3F01C3" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9E8D0091" + supplier "Logical View::ConstantCP" + quidu "365976530348"))) + (object Class "ConstantFieldref" + quid "36597B460340" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9E84020B" + supplier "Logical View::ConstantCP" + quidu "365976530348"))) + (object Class "Deprecated" + quid "36597C6901C2" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597CC90075" + stereotype "Method attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "Unknown" + quid "36597C7100E7" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597CB500BD" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "Synthetic" + quid "36597C7B00CD" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597CAF01A4" + stereotype "Class attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class "ConstantValue" + quid "36597D720032" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "36597D8000D3" + stereotype "Field attribute" + supplier "Logical View::Attribute" + quidu "365974430259"))) + (object Class_Utility "ClassParser" + quid "365982D0039F" + used_nodes (list uses_relationship_list + (object Uses_Relationship + quid "365982F50013" + stereotype "creates" + supplier "Logical View::JavaClass" + quidu "3659716E02C4")) + operations (list Operations + (object Operation "parse" + quid "36598B7B03D2" + result "JavaClass" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "Visitor" + quid "3659848103DE" + stereotype "Interface") + (object Class "ConstantString" + quid "365A9EE901C0" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9F9D0010" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantClass" + quid "365A9EFB005D" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9F8A00C7" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantInteger" + quid "365A9F020374" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365AA0090278" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantDouble" + quid "365A9F0902C0" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FA002A9" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantFloat" + quid "365A9F1003E3" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FA302D6" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantLong" + quid "365A9F3F0228" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FAB016F" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantUnicode" + quid "365A9F4E01CF" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FA80110" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantNameAndType" + quid "365A9F5B00A1" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FAE01FF" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "ConstantUtf8" + quid "365A9F7400A7" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A9FB1031C" + supplier "Logical View::Constant" + quidu "3659764E01CE"))) + (object Class "FieldOrMethod" + quid "37833DF6035A" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3783415403D2" + supplier "Logical View::AccessFlags" + quidu "3783404E0032")) + operations (list Operations + (object Operation "getName" + quid "37833E050063" + result "String" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + abstract TRUE) + (object Class "AccessFlags" + quid "3783404E0032" + operations (list Operations + (object Operation "isPublic" + quid "3783405602D2" + result "boolean" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + abstract TRUE) + (object Association "$UNNAMED$0" + quid "3659721C01B6" + roles (list role_list + (object Role "$UNNAMED$1" + quid "3659721C03DD" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$2" + quid "3659721D0009" + supplier "Logical View::Method" + quidu "365971AB002D" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$3" + quid "36597228027C" + roles (list role_list + (object Role "$UNNAMED$4" + quid "365972290129" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$5" + quid "36597229013D" + supplier "Logical View::Field" + quidu "3659719C025C" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$6" + quid "3659760E010E" + roles (list role_list + (object Role "$UNNAMED$7" + quid "36597610005D" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$8" + quid "365976100071" + supplier "Logical View::Attribute" + quidu "365974430259" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$9" + quid "365979BF00B3" + roles (list role_list + (object Role "$UNNAMED$10" + quid "365979C0001E" + supplier "Logical View::Method" + quidu "365971AB002D" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$11" + quid "365979C00028" + supplier "Logical View::Code" + quidu "3659744C02AC" + client_cardinality (value cardinality "0..1") + is_navigable TRUE))) + (object Association "$UNNAMED$12" + quid "365979F60198" + roles (list role_list + (object Role "$UNNAMED$13" + quid "365979F803B8" + supplier "Logical View::Method" + quidu "365971AB002D" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$14" + quid "365979F803B9" + supplier "Logical View::ExceptionTable" + quidu "365976ED0187" + client_cardinality (value cardinality "0..1") + is_navigable TRUE))) + (object Association "$UNNAMED$15" + quid "36597A20015D" + roles (list role_list + (object Role "$UNNAMED$16" + quid "36597A2101E0" + supplier "Logical View::Code" + quidu "3659744C02AC" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$17" + quid "36597A2101EA" + supplier "Logical View::LineNumberTable" + quidu "365974D401FD" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$18" + quid "36597A2A0233" + roles (list role_list + (object Role "$UNNAMED$19" + quid "36597A2B0203" + supplier "Logical View::Code" + quidu "3659744C02AC" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$20" + quid "36597A2B020D" + supplier "Logical View::LocalVariableTable" + quidu "365974E4034A" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$21" + quid "36597A4703BB" + roles (list role_list + (object Role "$UNNAMED$22" + quid "36597A49001B" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$23" + quid "36597A49002F" + supplier "Logical View::InnerClasses" + quidu "3659751A0398" + client_cardinality (value cardinality "0..1") + is_navigable TRUE))) + (object Association "$UNNAMED$24" + quid "36597A54005D" + roles (list role_list + (object Role "$UNNAMED$25" + quid "36597A5403CE" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$26" + quid "36597A5403E2" + supplier "Logical View::SourceFile" + quidu "365974F201D8" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$27" + quid "36597ADA000F" + roles (list role_list + (object Role "$UNNAMED$28" + quid "36597ADA0327" + supplier "Logical View::ConstantPool" + quidu "365976440134" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$29" + quid "36597ADA0331" + supplier "Logical View::Constant" + quidu "3659764E01CE" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$30" + quid "36597D490047" + roles (list role_list + (object Role "$UNNAMED$31" + quid "36597D4903B9" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$32" + quid "36597D4903C3" + supplier "Logical View::Attribute" + quidu "365974430259" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$33" + quid "36597D8E01EB" + roles (list role_list + (object Role "$UNNAMED$34" + quid "36597D8F0124" + supplier "Logical View::Field" + quidu "3659719C025C" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$35" + quid "36597D8F012E" + supplier "Logical View::Attribute" + quidu "365974430259" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$36" + quid "36597D930315" + roles (list role_list + (object Role "$UNNAMED$37" + quid "36597D9500B5" + supplier "Logical View::Method" + quidu "365971AB002D" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$38" + quid "36597D9500BF" + supplier "Logical View::Attribute" + quidu "365974430259" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$39" + quid "36597F6600FA" + roles (list role_list + (object Role "$UNNAMED$40" + quid "36597F680070" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$41" + quid "36597F68007A" + supplier "Logical View::Attribute" + quidu "365974430259" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$42" + quid "36598570008E" + roles (list role_list + (object Role "$UNNAMED$43" + quid "365985700265" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$44" + quid "36598570026F" + supplier "Logical View::ConstantPool" + quidu "365976440134" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$45" + quid "365985A101F7" + roles (list role_list + (object Role "$UNNAMED$46" + quid "365985A10392" + supplier "Logical View::JavaClass" + quidu "3659716E02C4" + is_navigable TRUE) + (object Role "$UNNAMED$47" + quid "365985A1039C" + supplier "Logical View::ConstantPool" + quidu "365976440134" + is_navigable TRUE)))) + logical_presentations (list unit_reference_list + (object ClassDiagram "Java class" + quid "3659714A03C7" + title "Java class" + zoom 90 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 414 + items (list diagram_item_list + (object ClassView "Class" "Logical View::ExceptionTable" @1 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1104, 1920) + label (object ItemLabel + Parent_View @1 + location (949, 1869) + fill_color 13434879 + nlines 1 + max_width 310 + justify 0 + label "ExceptionTable") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365976ED0187" + width 328 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::LineNumberTable" @2 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2144, 1936) + label (object ItemLabel + Parent_View @2 + location (1970, 1885) + fill_color 13434879 + nlines 1 + max_width 348 + justify 0 + label "LineNumberTable") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365974D401FD" + width 366 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Code" @3 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1584, 2032) + label (object ItemLabel + Parent_View @3 + location (1382, 1876) + fill_color 13434879 + nlines 1 + max_width 404 + justify 0 + label "Code") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659744C02AC" + compartment (object Compartment + Parent_View @3 + location (1382, 1931) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 5 + max_width 409) + width 422 + height 336 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$15" @4 + location (1877, 1981) + stereotype TRUE + line_color 3342489 + quidu "36597A20015D" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$16" @5 + Parent_View @4 + location (197, 877) + stereotype TRUE + line_color 3342489 + quidu "36597A2101E0" + client @4 + supplier @3 + line_style 0) + (object RoleView "$UNNAMED$17" @6 + Parent_View @4 + location (197, 877) + stereotype TRUE + line_color 3342489 + quidu "36597A2101EA" + client @4 + supplier @2 + line_style 0 + label (object SegLabel @7 + Parent_View @6 + location (1943, 1915) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)))) + (object ClassView "Class" "Logical View::LocalVariableTable" @8 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2496, 2144) + label (object ItemLabel + Parent_View @8 + location (2311, 2093) + fill_color 13434879 + nlines 1 + max_width 370 + justify 0 + label "LocalVariableTable") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365974E4034A" + width 388 + height 126 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$18" @9 + location (2048, 2088) + stereotype TRUE + line_color 3342489 + quidu "36597A2A0233" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$19" @10 + Parent_View @9 + location (-183, 852) + stereotype TRUE + line_color 3342489 + quidu "36597A2B0203" + client @9 + supplier @3 + line_style 0) + (object RoleView "$UNNAMED$20" @11 + Parent_View @9 + location (-183, 852) + stereotype TRUE + line_color 3342489 + quidu "36597A2B020D" + client @9 + supplier @8 + line_style 0 + label (object SegLabel @12 + Parent_View @11 + location (2269, 2170) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)))) + (object ClassView "Class" "Logical View::InnerClasses" @13 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2224, 1552) + label (object ItemLabel + Parent_View @13 + location (2088, 1501) + fill_color 13434879 + nlines 1 + max_width 272 + justify 0 + label "InnerClasses") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659751A0398" + width 290 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::SourceFile" @14 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2576, 1552) + label (object ItemLabel + Parent_View @14 + location (2461, 1501) + fill_color 13434879 + nlines 1 + max_width 230 + justify 0 + label "SourceFile") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365974F201D8" + width 248 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Deprecated" @15 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (720, 1920) + label (object ItemLabel + Parent_View @15 + location (602, 1869) + fill_color 13434879 + nlines 1 + max_width 236 + justify 0 + label "Deprecated") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597C6901C2" + width 254 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Unknown" @16 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2816, 1936) + label (object ItemLabel + Parent_View @16 + location (2717, 1885) + fill_color 13434879 + nlines 1 + max_width 198 + justify 0 + label "Unknown") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597C7100E7" + width 216 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Synthetic" @17 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2896, 1552) + label (object ItemLabel + Parent_View @17 + location (2791, 1501) + fill_color 13434879 + nlines 1 + max_width 210 + justify 0 + label "Synthetic") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597C7B00CD" + width 228 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantValue" @18 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (848, 1552) + label (object ItemLabel + Parent_View @18 + location (697, 1501) + fill_color 13434879 + nlines 1 + max_width 302 + justify 0 + label "ConstantValue") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597D720032" + width 320 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "ClassUtility" "Logical View::ClassParser" @19 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (784, 912) + label (object ItemLabel + Parent_View @19 + location (657, 839) + fill_color 13434879 + nlines 1 + max_width 254 + justify 0 + label "ClassParser") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365982D0039F" + compartment (object Compartment + Parent_View @19 + location (657, 894) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 148) + width 272 + height 168 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Attribute" @20 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1648, 1536) + label (object ItemLabel + Parent_View @20 + location (1552, 1484) + fill_color 13434879 + nlines 1 + max_width 192 + justify 0 + label "Attribute") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365974430259" + width 210 + height 126 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @21 + location (1620, 1691) + line_color 3342489 + fill_color 13434879 + supplier @20 + vertices (list Points + (1620, 1691) + (1620, 1599))) + (object InheritView "" @22 + stereotype (object SegLabel @23 + Parent_View @22 + location (1625, 1778) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.505747 + height 52 + orientation 1) + line_color 3342489 + quidu "36597457033E" + client @3 + supplier @20 + line_style 3 + origin_attachment (1573, 1864) + terminal_attachment (1573, 1691) + drawSupplier @21) + (object InheritView "" @24 + stereotype (object SegLabel @25 + Parent_View @24 + location (2121, 1847) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.143488 + height 3 + orientation 1) + line_color 3342489 + quidu "3659752A01B0" + client @2 + supplier @20 + line_style 3 + origin_attachment (2118, 1873) + terminal_attachment (2118, 1691) + drawSupplier @21) + (object InheritView "" @26 + stereotype (object SegLabel @27 + Parent_View @26 + location (2579, 1653) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.497717 + height 13 + orientation 0) + line_color 3342489 + quidu "3659753B002E" + client @14 + supplier @20 + line_style 3 + origin_attachment (2566, 1615) + terminal_attachment (2566, 1691) + drawSupplier @21) + (object InheritView "" @28 + stereotype (object SegLabel @29 + Parent_View @28 + location (1145, 1774) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.497006 + height 34 + orientation 1) + line_color 3342489 + quidu "3659781D03A1" + client @1 + supplier @20 + line_style 3 + origin_attachment (1111, 1857) + terminal_attachment (1111, 1691) + drawSupplier @21) + (object InheritView "" @30 + stereotype TRUE + line_color 3342489 + quidu "36597CB500BD" + client @16 + supplier @20 + line_style 3 + origin_attachment (2819, 1873) + terminal_attachment (2819, 1691) + drawSupplier @21) + (object InheritView "" @31 + stereotype (object SegLabel @32 + Parent_View @31 + location (732, 1774) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.497006 + height 34 + orientation 1) + line_color 3342489 + quidu "36597CC90075" + client @15 + supplier @20 + line_style 3 + origin_attachment (698, 1857) + terminal_attachment (698, 1691) + drawSupplier @21) + (object ClassView "Class" "Logical View::Method" @33 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2064, 1408) + label (object ItemLabel + Parent_View @33 + location (1983, 1362) + fill_color 13434879 + nlines 1 + max_width 162 + justify 0 + label "Method") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365971AB002D" + height 114 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$36" @34 + location (1863, 1469) + stereotype TRUE + line_color 3342489 + quidu "36597D930315" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$37" @35 + Parent_View @34 + location (-57, 797) + stereotype TRUE + line_color 3342489 + quidu "36597D9500B5" + client @34 + supplier @33 + line_style 0 + label (object SegLabel @36 + Parent_View @35 + location (1978, 1491) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$38" @37 + Parent_View @34 + location (-57, 797) + stereotype TRUE + line_color 3342489 + quidu "36597D9500BF" + client @34 + supplier @20 + line_style 0 + label (object SegLabel @38 + Parent_View @37 + location (1781, 1551) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object ClassView "Class" "Logical View::Field" @39 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1232, 1408) + label (object ItemLabel + Parent_View @39 + location (1151, 1362) + fill_color 13434879 + nlines 1 + max_width 162 + justify 0 + label "Field") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659719C025C" + height 114 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$33" @40 + location (1432, 1469) + stereotype TRUE + line_color 3342489 + quidu "36597D8E01EB" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$34" @41 + Parent_View @40 + location (-488, 797) + stereotype TRUE + line_color 3342489 + quidu "36597D8F0124" + client @40 + supplier @39 + line_style 0 + label (object SegLabel @42 + Parent_View @41 + location (1319, 1491) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)) + (object RoleView "$UNNAMED$35" @43 + Parent_View @40 + location (-488, 797) + stereotype TRUE + line_color 3342489 + quidu "36597D8F012E" + client @40 + supplier @20 + line_style 0 + label (object SegLabel @44 + Parent_View @43 + location (1546, 1448) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object ClassView "Class" "Logical View::ConstantPool" @45 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2448, 1152) + label (object ItemLabel + Parent_View @45 + location (2300, 1070) + fill_color 13434879 + nlines 1 + max_width 296 + justify 0 + label "ConstantPool") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365976440134" + compartment (object Compartment + Parent_View @45 + location (2300, 1125) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 303) + width 314 + height 186 + annotation 8 + autoResize TRUE) + (object InheritView "" @46 + stereotype (object SegLabel @47 + Parent_View @46 + location (2476, 2035) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.118199 + height 4 + orientation 1) + line_color 3342489 + quidu "365975320072" + client @8 + supplier @20 + line_style 3 + origin_attachment (2472, 2081) + terminal_attachment (2472, 1691) + drawSupplier @21) + (object InheritView "" @48 + stereotype (object SegLabel @49 + Parent_View @48 + location (2206, 1653) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.497717 + height 7 + orientation 1) + line_color 3342489 + quidu "3659756B010A" + client @13 + supplier @20 + line_style 3 + origin_attachment (2212, 1615) + terminal_attachment (2212, 1691) + drawSupplier @21) + (object InheritView "" @50 + label (object ItemLabel + Parent_View @50 + location (2892, 1653) + anchor_loc 1 + nlines 1 + max_width 264 + justify 0 + label "") + stereotype (object SegLabel @51 + Parent_View @50 + location (2902, 1653) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.497717 + height 10 + orientation 0) + line_color 3342489 + quidu "36597CAF01A4" + client @17 + supplier @20 + line_style 3 + origin_attachment (2892, 1615) + terminal_attachment (2892, 1691) + drawSupplier @21) + (object InheritView "" @52 + stereotype (object SegLabel @53 + Parent_View @52 + location (871, 1651) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.480000 + height 27 + orientation 0) + line_color 3342489 + quidu "36597D8000D3" + client @18 + supplier @20 + line_style 3 + origin_attachment (844, 1615) + terminal_attachment (844, 1691) + drawSupplier @21) + (object ClassView "Class" "Logical View::FieldOrMethod" @54 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1648, 1200) + font (object Font + italics TRUE) + label (object ItemLabel + Parent_View @54 + location (1502, 1127) + fill_color 13434879 + nlines 1 + max_width 292 + justify 0 + label "FieldOrMethod") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "37833DF6035A" + compartment (object Compartment + Parent_View @54 + location (1502, 1182) + font (object Font + italics TRUE) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 208) + width 310 + height 168 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::AccessFlags" @55 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (896, 1200) + font (object Font + italics TRUE) + label (object ItemLabel + Parent_View @55 + location (762, 1127) + fill_color 13434879 + nlines 1 + max_width 268 + justify 0 + label "AccessFlags") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3783404E0032" + compartment (object Compartment + Parent_View @55 + location (762, 1182) + font (object Font + italics TRUE) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 192) + width 286 + height 168 + annotation 8 + autoResize TRUE) + (object InheritView "" @56 + stereotype TRUE + line_color 3342489 + quidu "3783415403D2" + client @54 + supplier @55 + line_style 0) + (object InheritTreeView "" @57 + location (1635, 1379) + line_color 3342489 + fill_color 13434879 + supplier @54 + vertices (list Points + (1635, 1379) + (1635, 1284))) + (object InheritView "" @58 + stereotype TRUE + line_color 3342489 + quidu "3783403702BA" + client @33 + supplier @54 + line_style 3 + origin_attachment (1979, 1358) + terminal_attachment (1979, 1379) + drawSupplier @57) + (object InheritView "" @59 + stereotype TRUE + line_color 3342489 + quidu "378340240028" + client @39 + supplier @54 + line_style 3 + origin_attachment (1312, 1410) + terminal_attachment (1312, 1379) + drawSupplier @57) + (object ClassView "Class" "Logical View::JavaClass" @60 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1648, 912) + label (object ItemLabel + Parent_View @60 + location (1446, 816) + fill_color 13434879 + nlines 1 + max_width 404 + justify 0 + label "JavaClass") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659716E02C4" + compartment (object Compartment + Parent_View @60 + location (1446, 871) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 3 + max_width 450) + width 422 + height 214 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$0" @61 + location (1876, 1184) + stereotype TRUE + line_color 3342489 + quidu "3659721C01B6" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$1" @62 + Parent_View @61 + location (1508, 768) + stereotype TRUE + line_color 3342489 + quidu "3659721C03DD" + client @61 + supplier @60 + line_style 0 + label (object SegLabel @63 + Parent_View @62 + location (1712, 1071) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)) + (object RoleView "$UNNAMED$2" @64 + Parent_View @61 + location (1508, 768) + stereotype TRUE + line_color 3342489 + quidu "3659721D0009" + client @61 + supplier @33 + line_style 0 + label (object SegLabel @65 + Parent_View @64 + location (2042, 1299) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object UsesView "" @66 + label (object ItemLabel + Parent_View @66 + location (1178, 912) + anchor_loc 1 + nlines 1 + max_width 60 + justify 0 + label "") + stereotype (object SegLabel @67 + Parent_View @66 + location (1228, 869) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 0.598000 + height 44 + orientation 0) + line_color 3342489 + quidu "365982F50013" + client @19 + supplier @60 + line_style 0) + (object AssociationViewNew "$UNNAMED$45" @68 + location (2074, 1039) + stereotype TRUE + line_color 3342489 + quidu "365985A101F7" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$46" @69 + Parent_View @68 + location (-278, 847) + stereotype TRUE + line_color 3342489 + quidu "365985A10392" + client @68 + supplier @60 + line_style 0) + (object RoleView "$UNNAMED$47" @70 + Parent_View @68 + location (-278, 847) + stereotype TRUE + line_color 3342489 + quidu "365985A1039C" + client @68 + supplier @45 + line_style 0))) + (object InheritView "" @71 + stereotype TRUE + line_color 3342489 + quidu "3783415D015E" + client @60 + supplier @55 + line_style 0) + (object AssociationViewNew "$UNNAMED$3" @72 + location (1418, 1184) + stereotype TRUE + line_color 3342489 + quidu "36597228027C" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$4" @73 + Parent_View @72 + location (426, 400) + stereotype TRUE + line_color 3342489 + quidu "365972290129" + client @72 + supplier @60 + line_style 0 + label (object SegLabel @74 + Parent_View @73 + location (1583, 1071) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$5" @75 + Parent_View @72 + location (426, 400) + stereotype TRUE + line_color 3342489 + quidu "36597229013D" + client @72 + supplier @39 + line_style 0 + label (object SegLabel @76 + Parent_View @75 + location (1334, 1368) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))))) + (object ClassDiagram "Constant pool" + quid "36597BC201E0" + title "Constant pool" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 995 + origin_y 0 + items (list diagram_item_list + (object ClassView "Class" "Logical View::ConstantCP" @77 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2192, 800) + label (object ItemLabel + Parent_View @77 + location (2065, 751) + fill_color 13434879 + nlines 1 + max_width 254 + justify 0 + label "ConstantCP") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365976530348" + width 272 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantInterfaceMethodref" @78 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2160, 1104) + label (object ItemLabel + Parent_View @78 + location (1894, 1055) + fill_color 13434879 + nlines 1 + max_width 532 + justify 0 + label "ConstantInterfaceMethodref") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597B2E03DC" + width 550 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantMethodref" @79 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2688, 1104) + label (object ItemLabel + Parent_View @79 + location (2504, 1055) + fill_color 13434879 + nlines 1 + max_width 368 + justify 0 + label "ConstantMethodref") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597B3F01C3" + width 386 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantFieldref" @80 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1648, 1104) + label (object ItemLabel + Parent_View @80 + location (1484, 1055) + fill_color 13434879 + nlines 1 + max_width 328 + justify 0 + label "ConstantFieldref") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "36597B460340" + width 346 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantPool" @81 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2368, 176) + label (object ItemLabel + Parent_View @81 + location (2220, 97) + fill_color 13434879 + nlines 1 + max_width 296 + justify 0 + label "ConstantPool") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365976440134" + width 314 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Constant" @82 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2368, 448) + label (object ItemLabel + Parent_View @82 + location (2270, 399) + fill_color 13434879 + nlines 1 + max_width 196 + justify 0 + label "Constant") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659764E01CE" + width 214 + height 126 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$27" @83 + location (2368, 326) + stereotype TRUE + line_color 3342489 + quidu "36597ADA000F" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$28" @84 + Parent_View @83 + location (1968, -2298) + stereotype TRUE + line_color 3342489 + quidu "36597ADA0327" + client @83 + supplier @81 + line_style 0 + label (object SegLabel @85 + Parent_View @84 + location (2422, 276) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$29" @86 + Parent_View @83 + location (1968, -2298) + stereotype TRUE + line_color 3342489 + quidu "36597ADA0331" + client @83 + supplier @82 + line_style 0 + label (object SegLabel @87 + Parent_View @86 + location (2422, 378) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object InheritTreeView "" @88 + location (2181, 956) + line_color 3342489 + fill_color 13434879 + supplier @77 + vertices (list Points + (2181, 956) + (2181, 863))) + (object InheritView "" @89 + stereotype TRUE + line_color 3342489 + quidu "365A9E84020B" + client @80 + supplier @77 + line_style 3 + origin_attachment (1640, 1041) + terminal_attachment (1640, 956) + drawSupplier @88) + (object ClassView "Class" "Logical View::ConstantString" @90 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2704, 800) + label (object ItemLabel + Parent_View @90 + location (2552, 751) + fill_color 13434879 + nlines 1 + max_width 304 + justify 0 + label "ConstantString") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9EE901C0" + width 322 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantClass" @91 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1360, 800) + label (object ItemLabel + Parent_View @91 + location (1208, 751) + fill_color 13434879 + nlines 1 + max_width 304 + justify 0 + label "ConstantClass") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9EFB005D" + width 322 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantInteger" @92 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1968, 432) + label (object ItemLabel + Parent_View @92 + location (1812, 383) + fill_color 13434879 + nlines 1 + max_width 312 + justify 0 + label "ConstantInteger") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F020374" + width 330 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantDouble" @93 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1568, 432) + label (object ItemLabel + Parent_View @93 + location (1406, 383) + fill_color 13434879 + nlines 1 + max_width 324 + justify 0 + label "ConstantDouble") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F0902C0" + width 342 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantFloat" @94 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1760, 800) + label (object ItemLabel + Parent_View @94 + location (1617, 751) + fill_color 13434879 + nlines 1 + max_width 286 + justify 0 + label "ConstantFloat") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F1003E3" + width 304 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantLong" @95 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1184, 432) + label (object ItemLabel + Parent_View @95 + location (1041, 383) + fill_color 13434879 + nlines 1 + max_width 286 + justify 0 + label "ConstantLong") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F3F0228" + width 304 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantUnicode" @96 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (3136, 800) + label (object ItemLabel + Parent_View @96 + location (2964, 751) + fill_color 13434879 + nlines 1 + max_width 344 + justify 0 + label "ConstantUnicode") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F4E01CF" + width 362 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantNameAndType" @97 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2848, 432) + label (object ItemLabel + Parent_View @97 + location (2620, 383) + fill_color 13434879 + nlines 1 + max_width 456 + justify 0 + label "ConstantNameAndType") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F5B00A1" + width 474 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConstantUtf8" @98 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (3312, 432) + label (object ItemLabel + Parent_View @98 + location (3178, 383) + fill_color 13434879 + nlines 1 + max_width 268 + justify 0 + label "ConstantUtf8") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9F7400A7" + width 286 + height 126 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @99 + location (2374, 625) + line_color 3342489 + fill_color 13434879 + supplier @82 + vertices (list Points + (2374, 625) + (2374, 511))) + (object InheritView "" @100 + stereotype TRUE + line_color 3342489 + quidu "365A9F8A00C7" + client @91 + supplier @82 + line_style 3 + origin_attachment (1362, 737) + terminal_attachment (1362, 625) + drawSupplier @99) + (object InheritView "" @101 + stereotype TRUE + line_color 3342489 + quidu "365A9F9D0010" + client @90 + supplier @82 + line_style 3 + origin_attachment (2698, 737) + terminal_attachment (2698, 625) + drawSupplier @99) + (object InheritView "" @102 + stereotype TRUE + line_color 3342489 + quidu "365A9FA002A9" + client @93 + supplier @82 + line_style 3 + origin_attachment (1559, 495) + terminal_attachment (1559, 625) + drawSupplier @99) + (object InheritView "" @103 + stereotype TRUE + line_color 3342489 + quidu "365A9FA80110" + client @96 + supplier @82 + line_style 3 + origin_attachment (3133, 737) + terminal_attachment (3133, 625) + drawSupplier @99) + (object InheritView "" @104 + stereotype TRUE + line_color 3342489 + quidu "365A9FAB016F" + client @95 + supplier @82 + line_style 3 + origin_attachment (1181, 495) + terminal_attachment (1181, 625) + drawSupplier @99) + (object InheritView "" @105 + stereotype TRUE + line_color 3342489 + quidu "365A9FB1031C" + client @98 + supplier @82 + line_style 3 + origin_attachment (3312, 495) + terminal_attachment (3312, 625) + drawSupplier @99) + (object InheritView "" @106 + stereotype TRUE + line_color 3342489 + quidu "36597AFA0160" + client @77 + supplier @82 + line_style 3 + origin_attachment (2190, 737) + terminal_attachment (2190, 625) + drawSupplier @99) + (object InheritView "" @107 + stereotype TRUE + line_color 3342489 + quidu "365AA0090278" + client @92 + supplier @82 + line_style 3 + origin_attachment (1950, 495) + terminal_attachment (1950, 625) + drawSupplier @99) + (object InheritView "" @108 + stereotype TRUE + line_color 3342489 + quidu "365A9FA302D6" + client @94 + supplier @82 + line_style 3 + origin_attachment (1753, 737) + terminal_attachment (1753, 625) + drawSupplier @99) + (object InheritView "" @109 + stereotype TRUE + line_color 3342489 + quidu "365A9FAE01FF" + client @97 + supplier @82 + line_style 3 + origin_attachment (2812, 495) + terminal_attachment (2812, 625) + drawSupplier @99) + (object InheritView "" @110 + stereotype TRUE + line_color 3342489 + quidu "365A9E870042" + client @78 + supplier @77 + line_style 3 + origin_attachment (2143, 1041) + terminal_attachment (2143, 956) + drawSupplier @88) + (object InheritView "" @111 + stereotype TRUE + line_color 3342489 + quidu "365A9E8D0091" + client @79 + supplier @77 + line_style 3 + origin_attachment (2668, 1041) + terminal_attachment (2668, 956) + drawSupplier @88))))) + root_subsystem (object SubSystem "Component View" + quid "365971490054" + physical_models (list unit_reference_list) + physical_presentations (list unit_reference_list + (object Module_Diagram "Main" + quid "3659714A039F" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + process_structure (object Processes + quid "365971490055" + ProcsNDevs (list + (object Process_Diagram "Deployment View" + quid "36597149005E" + title "Deployment View" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + properties (object Properties + quid "365971490056")) diff --git a/docs/diagrams.tex b/docs/diagrams.tex new file mode 100644 index 00000000..454b7242 --- /dev/null +++ b/docs/diagrams.tex @@ -0,0 +1,19 @@ + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfysize0.93\textheight + \epsfbox{eps/constantpool.eps} + \caption{UML diagram for the ConstantPool API}\label{fig:umlcp} + \end{center} +\end{figure} + +\begin{figure}[ht] + \begin{center} + \leavevmode + \epsfysize0.93\textheight + \epsfbox{eps/instructions.eps} + \caption{UML diagram for the Instruction API}\label{fig:umlinstr} + \end{center} +\end{figure} + diff --git a/docs/eps/classfile.eps b/docs/eps/classfile.eps new file mode 100644 index 00000000..5896e457 --- /dev/null +++ b/docs/eps/classfile.eps @@ -0,0 +1,378 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: classfile.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Mon Nov 30 16:01:26 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 520 460 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-17.0 540.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 10000 m -1000 -1000 l 9937 -1000 l 9937 10000 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 2999 6599 m 2400 6599 l 2400 6749 l 2999 6749 l cp gs col0 s gr +% Polyline +n 2400 6749 m 2999 6749 l 2999 6899 l 2400 6899 l cp gs col0 s gr +% Polyline +n 2999 6899 m 2400 6899 l 2400 7049 l 2999 7049 l cp gs col0 s gr +% Polyline +n 2400 7049 m 2999 7049 l 2999 7200 l 2400 7200 l cp gs col0 s gr +% Polyline +n 2400 7200 m 2999 7200 l 2999 7349 l 2400 7349 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 7424 m 2699 7724 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 6449 m 3299 6449 l 3299 7949 l 299 7949 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 6824 m +gs 1 -1 sc (Methods) col0 sh gr +% Polyline +n 2999 5099 m 2400 5099 l 2400 5249 l 2999 5249 l cp gs col0 s gr +% Polyline +n 2400 5249 m 2999 5249 l 2999 5399 l 2400 5399 l cp gs col0 s gr +% Polyline +n 2999 5399 m 2400 5399 l 2400 5549 l 2999 5549 l cp gs col0 s gr +% Polyline +n 2400 5549 m 2999 5549 l 2999 5699 l 2400 5699 l cp gs col0 s gr +% Polyline +n 2400 5699 m 2999 5699 l 2999 5849 l 2400 5849 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 5924 m 2699 6224 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 4949 m 3299 4949 l 3299 6449 l 299 6449 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 5399 m +gs 1 -1 sc (Fields) col0 sh gr +% Polyline +n 299 4199 m 3299 4199 l 3299 4949 l 299 4949 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 4649 m +gs 1 -1 sc (Implemented interfaces) col0 sh gr +% Polyline +n 299 3449 m 3299 3449 l 3299 4199 l 299 4199 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 3899 m +gs 1 -1 sc (Access rights) col0 sh gr +% Polyline +n 299 1349 m 3299 1349 l 3299 2099 l 299 2099 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 1799 m +gs 1 -1 sc (Header) col0 sh gr +% Polyline +n 2999 2249 m 2400 2249 l 2400 2400 l 2999 2400 l cp gs col0 s gr +% Polyline +n 2400 2400 m 2999 2400 l 2999 2549 l 2400 2549 l cp gs col0 s gr +% Polyline +n 2999 2549 m 2400 2549 l 2400 2699 l 2999 2699 l cp gs col0 s gr +% Polyline +n 2400 2699 m 2999 2699 l 2999 2849 l 2400 2849 l cp gs col0 s gr +% Polyline +n 2400 2849 m 2999 2849 l 2999 2999 l 2400 2999 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 3074 m 2699 3374 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 2099 m 3299 2099 l 3299 3449 l 299 3449 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 2549 m +gs 1 -1 sc (Constant pool) col0 sh gr +% Polyline +n 299 7949 m 3299 7949 l 3299 8699 l 299 8699 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 8400 m +gs 1 -1 sc (Class attributes) col0 sh gr +% Polyline +n 4800 2999 m 7499 2999 l 7499 4349 l 4800 4349 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 3299 m +gs 1 -1 sc (ConstantFieldref) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 3600 m +gs 1 -1 sc ("aVariable") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 3884 m +gs 1 -1 sc ("[Ljava/lang/Object;") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 4199 m +gs 1 -1 sc ("HelloWorld") col0 sh gr +% Polyline +n 5024 2624 m 7124 2624 l 7124 2924 l 5024 2924 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +5099 2849 m +gs 1 -1 sc ("java/io/PrintStream") col0 sh gr +% Polyline +n 4800 1649 m 7499 1649 l 7499 2999 l 4800 2999 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 1949 m +gs 1 -1 sc (ConstantMethodRef) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 2249 m +gs 1 -1 sc ("println") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 2534 m +gs 1 -1 sc ("\(Ljava/lang/String;\)V") col0 sh gr +% Polyline +n 4800 4349 m 7499 4349 l 7499 5099 l 4800 5099 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 4649 m +gs 1 -1 sc (ConstantClass) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 4949 m +gs 1 -1 sc ("java/io/PrintStream") col0 sh gr +% Polyline +n 4080 6500 m 3975 6500 3975 7770 105 arcto 4 {pop} repeat + 3975 7875 8820 7875 105 arcto 4 {pop} repeat + 8925 7875 8925 6605 105 arcto 4 {pop} repeat + 8925 6500 4080 6500 105 arcto 4 {pop} repeat + cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 3855 6725 m 3750 6725 3750 7995 105 arcto 4 {pop} repeat + 3750 8100 8595 8100 105 arcto 4 {pop} repeat + 8700 8100 8700 6830 105 arcto 4 {pop} repeat + 8700 6725 3855 6725 105 arcto 4 {pop} repeat + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 6150 7800 m 6150 7950 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 5550 7200 m 7200 7200 l 7200 7425 l 5550 7425 l cp gs col0 s gr +% Polyline +n 5550 7500 m 8625 7500 l 8625 7725 l 5550 7725 l cp gs col0 s gr +/Courier-Bold ff 180.00 scf sf +4050 7050 m +gs 1 -1 sc (getstatic java.lang.System.out) col0 sh gr +/Courier-Bold ff 180.00 scf sf +4050 7650 m +gs 1 -1 sc (invokevirtual java.io.PrintStream.println) col0 sh gr +/Courier-Bold ff 180.00 scf sf +4050 7350 m +gs 1 -1 sc (ldc "Hello, world") col0 sh gr +% Polyline + [15 45] 45 sd +n 2400 2249 m 4800 1649 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2400 2849 m 4800 5849 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +4693 3661 m 4800 3600 l 4734 3705 l 4832 3611 l 4790 3568 l cp +clip +n 2999 5324 m 4800 3600 l gs col0 s gr gr + +% arrowhead +n 4693 3661 m 4800 3600 l 4734 3705 l 4713 3683 l 4693 3661 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3669 7107 m 3750 7200 l 3635 7156 l 3745 7233 l 3779 7184 l cp +clip +n 2999 6674 m 3750 7200 l gs col0 s gr gr + +% arrowhead +n 3669 7107 m 3750 7200 l 3635 7156 l 3652 7131 l 3669 7107 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 5099 1649 m 5099 1349 l 7799 1349 l 7799 5549 l 7499 5549 l 7499 1649 l + 5099 1649 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline + [15 45] 45 sd +n 2999 2849 m 4800 4049 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2999 2249 m 4800 2024 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +7609 2533 m 7500 2475 l 7624 2475 l 7493 2442 l 7478 2500 l cp +clip +n 7800 2550 m 7500 2475 l gs col7 s gr gr + +% arrowhead +n 7609 2533 m 7500 2475 l 7624 2475 l 7616 2504 l 7609 2533 l cp gs col7 1.00 shd ef gr col7 s +% Polyline +n 4800 5099 m 7499 5099 l 7499 5849 l 4800 5849 l cp gs col0 s gr +% Polyline +n 7800 7500 m 7801 7499 l 7804 7496 l 7809 7491 l 7816 7483 l 7826 7472 l + 7840 7457 l 7856 7440 l 7875 7419 l 7897 7395 l 7921 7368 l + 7946 7340 l 7973 7310 l 7999 7279 l 8026 7247 l 8052 7216 l + 8078 7184 l 8102 7152 l 8125 7121 l 8147 7090 l 8167 7059 l + 8186 7029 l 8203 6998 l 8220 6966 l 8235 6934 l 8250 6900 l + 8261 6873 l 8272 6845 l 8282 6816 l 8292 6786 l 8303 6756 l + 8313 6724 l 8323 6692 l 8333 6659 l 8343 6626 l 8353 6592 l + 8363 6557 l 8373 6522 l 8382 6487 l 8392 6451 l 8402 6415 l + 8412 6379 l 8421 6342 l 8431 6305 l 8440 6268 l 8449 6231 l + 8458 6194 l 8467 6157 l 8476 6120 l 8484 6082 l 8492 6045 l + 8500 6007 l 8508 5969 l 8515 5932 l 8522 5894 l 8528 5856 l + 8535 5817 l 8540 5778 l 8545 5739 l 8550 5700 l 8554 5664 l + 8557 5628 l 8560 5591 l 8563 5554 l 8565 5517 l 8567 5479 l + 8568 5440 l 8570 5401 l 8571 5362 l 8572 5322 l 8572 5281 l + 8573 5241 l 8573 5200 l 8573 5159 l 8573 5117 l 8573 5076 l + 8572 5034 l 8572 4992 l 8571 4950 l 8570 4908 l 8570 4866 l + 8569 4824 l 8568 4783 l 8567 4741 l 8566 4700 l 8565 4659 l + 8564 4619 l 8563 4578 l 8562 4538 l 8561 4499 l 8560 4460 l + 8559 4421 l 8558 4383 l 8557 4346 l 8555 4309 l 8554 4272 l + 8552 4236 l 8550 4200 l 8548 4161 l 8545 4121 l 8542 4083 l + 8540 4044 l 8537 4006 l 8534 3968 l 8531 3930 l 8528 3892 l + 8526 3854 l 8523 3815 l 8520 3777 l 8517 3739 l 8515 3702 l + 8512 3664 l 8509 3626 l 8506 3588 l 8503 3551 l 8500 3514 l + 8497 3477 l 8493 3440 l 8490 3404 l 8486 3368 l 8481 3333 l + 8477 3298 l 8471 3264 l 8466 3231 l 8460 3199 l 8453 3167 l + 8446 3136 l 8438 3107 l 8430 3078 l 8421 3051 l 8411 3025 l + 8400 3000 l 8385 2969 l 8368 2941 l 8349 2913 l 8328 2887 l + 8305 2862 l 8279 2838 l 8251 2814 l 8220 2790 l 8187 2767 l + 8153 2744 l 8117 2721 l 8080 2699 l 8043 2678 l 8006 2657 l + 7970 2638 l 7937 2620 l 7907 2604 l 7879 2590 l 7856 2578 l + 7837 2568 l 7823 2561 l 7812 2556 l 7805 2553 l 7802 2551 l + 7800 2550 l gs col0 s gr +% Polyline +gs clippath +4723 4703 m 4800 4800 l 4687 4750 l 4794 4833 l 4830 4785 l cp +clip +n 5025 2775 m 5024 2776 l 5020 2779 l 5015 2784 l 5006 2792 l 4993 2804 l + 4977 2818 l 4957 2836 l 4934 2857 l 4908 2881 l 4879 2907 l + 4849 2935 l 4818 2964 l 4786 2994 l 4754 3023 l 4723 3053 l + 4693 3082 l 4664 3110 l 4637 3137 l 4612 3163 l 4589 3188 l + 4568 3212 l 4549 3235 l 4531 3257 l 4515 3278 l 4500 3300 l + 4485 3324 l 4471 3347 l 4457 3371 l 4444 3396 l 4432 3420 l + 4419 3445 l 4408 3470 l 4396 3495 l 4385 3520 l 4374 3546 l + 4363 3571 l 4352 3596 l 4342 3622 l 4332 3647 l 4323 3673 l + 4314 3698 l 4306 3724 l 4299 3749 l 4292 3775 l 4286 3800 l + 4281 3825 l 4278 3850 l 4276 3875 l 4275 3900 l 4276 3925 l + 4278 3950 l 4282 3975 l 4287 4001 l 4293 4027 l 4301 4053 l + 4309 4080 l 4319 4106 l 4329 4133 l 4340 4160 l 4351 4187 l + 4363 4214 l 4375 4241 l 4387 4268 l 4399 4294 l 4411 4320 l + 4423 4345 l 4434 4370 l 4446 4394 l 4457 4417 l 4468 4439 l + 4478 4460 l 4489 4481 l 4500 4500 l 4513 4522 l 4528 4543 l + 4543 4563 l 4559 4583 l 4578 4603 l 4597 4623 l 4618 4643 l + 4640 4664 l 4663 4685 l 4686 4705 l 4709 4724 l 4730 4742 l + 4749 4758 l 4765 4772 l 4778 4783 l 4800 4800 l gs col0 s gr gr + +% arrowhead +n 4723 4703 m 4800 4800 l 4687 4750 l 4705 4727 l 4723 4703 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7591 5782 m 7499 5699 l 7619 5728 l 7500 5665 l 7472 5719 l cp +clip +n 7200 7275 m 7203 7274 l 7208 7271 l 7219 7265 l 7235 7257 l 7256 7246 l + 7282 7233 l 7312 7217 l 7346 7200 l 7381 7182 l 7417 7163 l + 7453 7144 l 7487 7126 l 7520 7109 l 7551 7092 l 7580 7076 l + 7607 7061 l 7631 7048 l 7654 7034 l 7676 7022 l 7696 7010 l + 7714 6998 l 7733 6986 l 7750 6975 l 7770 6961 l 7790 6947 l + 7810 6933 l 7829 6918 l 7847 6903 l 7866 6887 l 7883 6871 l + 7901 6855 l 7917 6837 l 7933 6820 l 7947 6802 l 7961 6784 l + 7973 6766 l 7984 6748 l 7994 6729 l 8003 6711 l 8010 6693 l + 8016 6675 l 8021 6656 l 8025 6638 l 8028 6618 l 8030 6598 l + 8031 6578 l 8031 6556 l 8030 6534 l 8029 6511 l 8026 6487 l + 8023 6462 l 8019 6438 l 8015 6412 l 8009 6387 l 8004 6362 l + 7997 6338 l 7991 6314 l 7984 6291 l 7977 6269 l 7971 6247 l + 7964 6226 l 7957 6207 l 7950 6187 l 7942 6167 l 7934 6146 l + 7926 6126 l 7918 6106 l 7909 6086 l 7900 6066 l 7891 6046 l + 7881 6027 l 7871 6008 l 7861 5990 l 7850 5972 l 7840 5956 l + 7829 5940 l 7818 5925 l 7807 5911 l 7797 5898 l 7785 5886 l + 7774 5874 l 7762 5863 l 7750 5852 l 7737 5841 l 7722 5830 l + 7707 5819 l 7689 5807 l 7670 5795 l 7648 5782 l 7625 5769 l + 7602 5755 l 7578 5742 l 7555 5729 l 7535 5718 l 7499 5699 l gs col0 s gr gr + +% arrowhead +n 7591 5782 m 7499 5699 l 7619 5728 l 7605 5755 l 7591 5782 l cp gs 0.00 setgray ef gr col0 s +/Helvetica ff 210.00 scf sf +975 9000 m +gs 1 -1 sc (HelloWorld.class) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 5699 m +gs 1 -1 sc ("Hello, world") col0 sh gr +/Helvetica-Bold ff 210.00 scf sf +5099 5399 m +gs 1 -1 sc (ConstantString) col0 sh gr +$F2psEnd +rs diff --git a/docs/eps/classfile.fig b/docs/eps/classfile.fig new file mode 100644 index 00000000..e52815ce --- /dev/null +++ b/docs/eps/classfile.fig @@ -0,0 +1,173 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +6 299 1349 3299 8699 +6 299 1349 3299 7949 +6 299 6449 3299 7949 +6 2400 6599 2999 7799 +6 2400 6599 2999 7349 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 6599 2400 6599 2400 6749 2999 6749 2999 6599 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 6749 2999 6749 2999 6899 2400 6899 2400 6749 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 6899 2400 6899 2400 7049 2999 7049 2999 6899 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 7049 2999 7049 2999 7200 2400 7200 2400 7049 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 7200 2999 7200 2999 7349 2400 7349 2400 7200 +-6 +2 1 2 3 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2699 7424 2699 7724 +-6 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 6449 3299 6449 3299 7949 299 7949 299 6449 +4 0 0 100 0 18 14 0.0000 4 165 900 599 6824 Methods\001 +-6 +6 299 4949 3299 6449 +6 2400 5099 2999 6299 +6 2400 5099 2999 5849 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 5099 2400 5099 2400 5249 2999 5249 2999 5099 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 5249 2999 5249 2999 5399 2400 5399 2400 5249 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 5399 2400 5399 2400 5549 2999 5549 2999 5399 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 5549 2999 5549 2999 5699 2400 5699 2400 5549 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 5699 2999 5699 2999 5849 2400 5849 2400 5699 +-6 +2 1 2 3 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2699 5924 2699 6224 +-6 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 4949 3299 4949 3299 6449 299 6449 299 4949 +4 0 0 100 0 18 14 0.0000 4 165 630 599 5399 Fields\001 +-6 +6 299 4199 3299 4949 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 4199 3299 4199 3299 4949 299 4949 299 4199 +4 0 0 100 0 18 14 0.0000 4 210 2400 599 4649 Implemented interfaces\001 +-6 +6 299 3449 3299 4199 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 3449 3299 3449 3299 4199 299 4199 299 3449 +4 0 0 100 0 18 14 0.0000 4 210 1410 599 3899 Access rights\001 +-6 +6 299 1349 3299 2099 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 1349 3299 1349 3299 2099 299 2099 299 1349 +4 0 0 100 0 18 14 0.0000 4 165 720 599 1799 Header\001 +-6 +6 2400 2249 2999 3449 +6 2400 2249 2999 2999 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 2249 2400 2249 2400 2400 2999 2400 2999 2249 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 2400 2999 2400 2999 2549 2400 2549 2400 2400 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2999 2549 2400 2549 2400 2699 2999 2699 2999 2549 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 2699 2999 2699 2999 2849 2400 2849 2400 2699 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 2400 2849 2999 2849 2999 2999 2400 2999 2400 2849 +-6 +2 1 2 3 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2699 3074 2699 3374 +-6 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 2099 3299 2099 3299 3449 299 3449 299 2099 +4 0 0 100 0 18 14 0.0000 4 210 1470 599 2549 Constant pool\001 +-6 +6 299 7949 3299 8699 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 299 7949 3299 7949 3299 8699 299 8699 299 7949 +4 0 0 100 0 18 14 0.0000 4 165 1620 599 8400 Class attributes\001 +-6 +-6 +6 4800 2999 7499 4349 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 4800 2999 7499 2999 7499 4349 4800 4349 4800 2999 +4 0 0 100 0 18 14 0.0000 4 165 1725 5099 3299 ConstantFieldref\001 +4 0 0 100 0 16 14 0.0000 4 165 1050 5099 3600 "aVariable"\001 +4 0 0 100 0 16 14 0.0000 4 210 1920 5099 3884 "[Ljava/lang/Object;"\001 +4 0 0 100 0 16 14 0.0000 4 165 1185 5099 4199 "HelloWorld"\001 +-6 +6 4800 1649 7499 2999 +6 5024 2624 7124 2924 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 5024 2624 7124 2624 7124 2924 5024 2924 5024 2624 +4 0 0 100 0 16 14 0.0000 4 210 1950 5099 2849 "java/io/PrintStream"\001 +-6 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 4800 1649 7499 1649 7499 2999 4800 2999 4800 1649 +4 0 0 100 0 18 14 0.0000 4 165 2070 5099 1949 ConstantMethodRef\001 +4 0 0 100 0 16 14 0.0000 4 210 735 5099 2249 "println"\001 +4 0 0 100 0 16 14 0.0000 4 210 2085 5099 2534 "(Ljava/lang/String;)V"\001 +-6 +6 4800 4349 7499 5099 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 4800 4349 7499 4349 7499 5099 4800 5099 4800 4349 +4 0 0 100 0 18 14 0.0000 4 165 1515 5099 4649 ConstantClass\001 +4 0 0 100 0 16 14 0.0000 4 210 1950 5099 4949 "java/io/PrintStream"\001 +-6 +6 3750 6450 8925 8100 +2 4 0 1 0 0 100 0 20 0.000 0 0 7 0 0 5 + 8925 7875 3975 7875 3975 6500 8925 6500 8925 7875 +2 4 0 1 0 7 100 0 20 0.000 0 0 7 0 0 5 + 8700 8100 3750 8100 3750 6725 8700 6725 8700 8100 +-6 +6 4050 6900 8625 8025 +2 1 2 3 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 6150 7800 6150 7950 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 5550 7200 7200 7200 7200 7425 5550 7425 5550 7200 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 5550 7500 8625 7500 8625 7725 5550 7725 5550 7500 +4 0 0 100 0 14 12 0.0000 4 180 3570 4050 7050 getstatic java.lang.System.out\001 +4 0 0 100 0 14 12 0.0000 4 180 4305 4050 7650 invokevirtual java.io.PrintStream.println\001 +4 0 0 100 0 14 12 0.0000 4 150 2940 4050 7350 ldc "Hello, world"\001 +-6 +2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2400 2249 4800 1649 +2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2400 2849 4800 5849 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 2999 5324 4800 3600 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 2999 6674 3750 7200 +2 1 0 1 0 0 100 0 20 0.000 0 0 -1 0 0 7 + 5099 1649 5099 1349 7799 1349 7799 5549 7499 5549 7499 1649 + 5099 1649 +2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2999 2849 4800 4049 +2 1 2 1 0 7 100 0 -1 3.000 0 0 -1 0 0 2 + 2999 2249 4800 2024 +2 1 0 1 7 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7800 2550 7500 2475 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 4800 5099 7499 5099 7499 5849 4800 5849 4800 5099 +3 2 0 1 0 7 100 0 -1 0.000 0 0 0 6 + 7800 7500 8250 6900 8550 5700 8550 4200 8400 3000 7800 2550 + 0.000 -1.000 -1.000 -1.000 -1.000 0.000 +3 2 0 1 0 7 100 0 -1 0.000 0 1 0 5 + 1 1 1.00 60.00 120.00 + 5025 2775 4500 3300 4275 3900 4500 4500 4800 4800 + 0.000 -1.000 -1.000 -1.000 0.000 +3 0 0 1 0 7 100 0 -1 0.000 0 1 0 6 + 1 1 1.00 60.00 120.00 + 7200 7275 7800 6975 8100 6675 7950 6150 7799 5849 7499 5699 + 0.000 1.000 1.000 1.000 1.000 0.000 +4 0 0 100 0 16 14 0.0000 4 165 1575 975 9000 HelloWorld.class\001 +4 0 0 100 0 16 14 0.0000 4 195 1260 5099 5699 "Hello, world"\001 +4 0 0 100 0 18 14 0.0000 4 210 1560 5099 5399 ConstantString\001 diff --git a/docs/eps/classgen.eps b/docs/eps/classgen.eps new file mode 100644 index 00000000..4d7052b1 --- /dev/null +++ b/docs/eps/classgen.eps @@ -0,0 +1,499 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:42:13 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 535 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1249.738 -7.476 translate +90 rotate +1.623 1.623 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 234 594 236 124 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 470 593 M 233 593 I 233 718 I 470 718 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S29 F0 [41 0 0 -41 0 0 ] mFS +F0S29 Ji +257 643 M (BasicType)[27 23 20 8 21 26 19 23 0]xS +0.602 0 0.199 1 scol N 470 659 M 233 659 I 233 718 I 470 718 I C +K +N 470 682 M 233 682 I 233 718 I 470 718 I C +K +: N 252 292 360 184 rp C +1 1 0.801 1 scol L ; N 612 291 M 251 291 I 251 476 I 612 476 I C +K +0 0 0 1 scol 326 341 M (ObjectType)[32 23 10 23 21 11 26 19 23 0]xS +0.602 0 0.199 1 scol N 612 357 M 251 357 I 251 476 I 612 476 I C +K +N 612 380 M 251 380 I 251 476 I 612 476 I C +K +0 0 0 1 scol 310 448 M (getClassName\(\))[23 23 11 30 10 23 20 20 30 23 36 23 14 0]xS +: N 699 292 362 184 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1061 291 M 698 291 I 698 476 I 1061 476 I C +K +0 0 0 1 scol 786 341 M (ArrayType)[27 14 14 23 19 26 19 23 0]xS +0.602 0 0.199 1 scol N 1061 357 M 698 357 I 698 476 I 1061 476 I C +K +N 1061 380 M 698 380 I 698 476 I 1061 476 I C +K +0 0 0 1 scol 757 448 M (getDimensions\(\))[23 23 11 30 8 36 23 23 20 8 23 23 20 14 0]xS +: N 532 594 312 124 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 844 593 M 531 593 I 531 718 I 844 718 I C +K +0 0 0 1 scol 546 643 M (ReferenceType)[30 23 12 23 14 23 23 21 23 26 19 23 0]xS +0.602 0 0.199 1 scol N 844 659 M 531 659 I 531 718 I 844 718 I C +K +N 844 682 M 531 682 I 531 718 I 844 718 I C +K +: N 1202 295 284 178 rp C +1 1 0.801 1 scol L ; N 1486 294 M 1201 294 I 1201 473 I 1486 473 I C +K +0 0 0 1 scol +%%IncludeResource: font Helvetica-Oblique +F /F1 0 /256 T /Helvetica-Oblique mF +/F1S29 F1 [41 0 0 -41 0 0 ] mFS +F1S29 Ji +1226 343 M (AccessFlags)[27 21 21 23 21 21 25 9 23 23 0]xS +0.602 0 0.199 1 scol N 1486 360 M 1201 360 I 1201 473 I 1486 473 I C +K +N 1486 383 M 1201 383 I 1201 473 I 1486 473 I C +K +0 0 0 1 scol 1260 450 M (isPublic\(\))[9 21 27 23 23 9 9 21 14 0]xS +0.602 0 0.199 1 scol N 1344 602 M 1344 474 I K +N 1059 602 M 1634 602 I K +N 1344 474 M 1366 534 I 1322 534 I C +: 1 1 1 1 scol O ; K +N 678 500 M 678 593 I K +N 369 500 M 881 500 I K +N 678 593 M 700 533 I 656 533 I C +: 1 1 1 1 scol O ; K +N 369 477 M 369 500 I K +N 881 477 M 881 500 I K +: N 919 683 306 234 rp C +1 1 0.801 1 scol L ; N 1225 682 M 918 682 I 918 917 I 1225 917 I C +K +0 0 0 1 scol F0S29 Ji +988 732 M (FieldGen)[25 8 23 10 23 32 23 0]xS +0.602 0 0.199 1 scol N 1225 748 M 918 748 I 918 917 I 1225 917 I C +K +N 1225 771 M 918 771 I 918 917 I 1225 917 I C +K +0 0 0 1 scol 977 839 M (getField\(\))[23 23 11 25 8 23 10 23 14 0]xS +977 886 M (setInitValue\(\))[20 23 11 10 23 8 11 27 23 10 23 23 14 0]xS +0.602 0 0.199 1 scol N 1059 682 M 1059 602 I K +: N 543 1283 386 122 rp C +1 1 0.801 1 scol L ; N 929 1282 M 542 1282 I 542 1405 I 929 1405 I C +K +0 0 0 1 scol 571 1332 M (LocalVariableGen)[23 23 21 23 10 27 23 14 8 23 23 10 23 32 23 0]xS +0.602 0 0.199 1 scol N 929 1348 M 542 1348 I 542 1405 I 929 1405 I C +K +N 929 1371 M 542 1371 I 542 1405 I 929 1405 I C +K +: N 538 1106 396 124 rp C +1 1 0.801 1 scol L ; N 934 1105 M 537 1105 I 537 1230 I 934 1230 I C +K +0 0 0 1 scol 559 1155 M (CodeExceptionGen)[30 23 23 23 27 18 21 23 23 11 8 23 23 32 23 0]xS +0.602 0 0.199 1 scol N 934 1171 M 537 1171 I 537 1230 I 934 1230 I C +K +N 934 1194 M 537 1194 I 537 1230 I 934 1230 I C +K +: N 351 836 322 184 rp C +1 1 0.801 1 scol L ; N 673 835 M 350 835 I 350 1020 I 673 1020 I C +K +0 0 0 1 scol 466 885 M (Type)[26 19 23 0]xS +0.602 0 0.199 1 scol N 673 901 M 350 901 I 350 1020 I 673 1020 I C +K +N 673 924 M 350 924 I 350 1020 I 673 1020 I C +K +0 0 0 1 scol 409 992 M (getSignature\(\))[23 23 11 27 8 23 23 23 11 23 14 23 14 0]xS +0.602 0 0.199 1 scol N 512 745 M 512 835 I K +N 347 745 M 669 745 I K +N 512 835 M 534 775 I 490 775 I C +: 1 1 1 1 scol O ; K +N 795 862 M 674 889 I K +N 795 862 M 917 833 I K +N 347 719 M 347 745 I K +N 669 719 M 669 745 I K +: N 538 1457 364 126 rp C +1 1 0.801 1 scol L ; N 902 1456 M 537 1456 I 537 1583 I 902 1583 I C +K +0 0 0 1 scol 561 1506 M (BranchInstruction)[27 14 23 23 21 23 10 23 20 11 14 23 21 11 8 23 0]xS +0.602 0 0.199 1 scol N 902 1522 M 537 1522 I 537 1583 I 902 1583 I C +K +N 902 1545 M 537 1545 I 537 1583 I 902 1583 I C +K +: N 1157 1012 342 184 rp C +1 1 0.801 1 scol L ; N 1499 1011 M 1156 1011 I 1156 1196 I 1499 1196 I C +K +0 0 0 1 scol 1221 1061 M (MethodGen)[33 23 11 23 23 23 32 23 0]xS +0.602 0 0.199 1 scol N 1499 1077 M 1156 1077 I 1156 1196 I 1499 1196 I C +K +N 1499 1100 M 1156 1100 I 1156 1196 I 1499 1196 I C +K +0 0 0 1 scol 1215 1168 M (addException\(\))[23 23 23 27 18 21 23 23 11 8 23 23 14 0]xS +0.602 0 0.199 1 scol N 1022 1227 M 1155 1172 I K +N 1155 1172 M 1136 1196 I 1105 1193 I 1124 1168 I 1155 1172 I C +: 1 1 1 1 scol O ; K +N 1022 1227 M 886 1281 I K +N 913 1302 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 913 1340 M (*)S +N 913 1302 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 913 1340 M (*)S +0.602 0 0.199 1 scol N 1045 1134 M 1155 1121 I K +N 1155 1121 M 1130 1139 I 1101 1127 I 1126 1109 I 1155 1121 I C +: 1 1 1 1 scol O ; K +N 1045 1134 M 935 1145 I K +N 934 1068 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 934 1106 M (*)S +N 934 1068 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 934 1106 M (*)S +0.602 0 0.199 1 scol N 914 1014 M 674 962 I K +N 914 1014 M 1155 1066 I K +N 1344 1011 M 1344 602 I K +: N 1751 1012 306 184 rp C +1 1 0.801 1 scol L ; N 2057 1011 M 1750 1011 I 1750 1196 I 2057 1196 I C +K +0 0 0 1 scol 1779 1061 M (InstructionList)[10 23 20 11 14 23 21 11 8 23 23 23 8 20 0]xS +0.602 0 0.199 1 scol N 2057 1077 M 1750 1077 I 1750 1196 I 2057 1196 I C +K +N 2057 1100 M 1750 1100 I 1750 1196 I 2057 1196 I C +K +0 0 0 1 scol 1809 1168 M (append\(\))[23 23 23 23 23 23 14 0]xS +0.602 0 0.199 1 scol N 1624 1104 M 1749 1104 I K +N 1624 1104 M 1500 1104 I K +: N 1201 1313 222 190 rp C +1 1 0.801 1 scol L ; N 1423 1312 M 1200 1312 I 1200 1503 I 1423 1503 I C +K +0 0 0 1 scol 1219 1362 M (Instruction)[10 23 20 11 14 23 21 11 8 23 0]xS +0.602 0 0.199 1 scol N 1423 1378 M 1200 1378 I 1200 1503 I 1423 1503 I C +K +N 1423 1495 M 1200 1495 I 1200 1503 I 1423 1503 I C +K +0 0 0 1 scol 1259 1422 M (tag)[11 23 0]xS +1259 1469 M (length)[10 23 23 23 11 0]xS +0.602 0 0.199 1 scol N 903 1485 M 1199 1429 I K +N 1199 1429 M 1144 1462 I 1136 1418 I C +: 1 1 1 1 scol O ; K +: N 1722 1345 364 126 rp C +1 1 0.801 1 scol L ; N 2086 1344 M 1721 1344 I 1721 1471 I 2086 1471 I C +K +0 0 0 1 scol 1744 1394 M (InstructionHandle)[10 23 20 11 14 23 21 11 8 23 23 30 23 23 23 10 0]xS +0.602 0 0.199 1 scol N 2086 1410 M 1721 1410 I 1721 1471 I 2086 1471 I C +K +N 2086 1433 M 1721 1433 I 1721 1471 I 2086 1471 I C +K +N 1904 1270 M 1904 1197 I K +N 1947 1181 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1947 1219 M (1)S +0.602 0 0.199 1 scol N 1904 1197 M 1919 1224 I 1904 1251 I 1889 1224 I 1904 1197 I C +: 1 1 1 1 scol O ; K +N 1904 1270 M 1904 1343 I K +N 1950 1313 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1950 1351 M (*)S +N 1947 1181 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1947 1219 M (1)S +N 1950 1313 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1950 1351 M (*)S +0.602 0 0.199 1 scol N 1572 1408 M 1424 1408 I K +N 1429 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1429 1477 M (1)S +0.602 0 0.199 1 scol N 1572 1408 M 1720 1408 I K +N 1693 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1693 1477 M (1)S +N 1429 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1429 1477 M (1)S +N 1693 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1693 1477 M (1)S +: N 0 1224 384 240 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol : 0 1223 385 242 rc N 384 1223 M -1 1223 I -1 1464 I 384 1464 I C +K +; 0 0 0 1 scol 20 1323 M (InstructionTargeter)[10 23 20 11 14 23 21 11 8 23 23 26 23 14 23 23 11 23 0]xS +0.602 0 0.199 1 scol : 0 1339 385 126 rc N 384 1339 M -1 1339 I -1 1464 I 384 1464 I C +K +; : 0 1362 385 103 rc N 384 1362 M -1 1362 I -1 1464 I 384 1464 I C +K +; 0 0 0 1 scol 58 1430 M (updateTarget\(\))[23 23 23 23 11 23 26 23 14 23 23 11 14 0]xS +64 1273 M (<>)[24 24 10 23 11 23 14 12 23 21 23 24 0]xS +1 1 1 1 scol [ 72 24 ] 0 sd N 540 1231 M 385 1280 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 540 1231 M 385 1280 I K +0.602 0 0.199 1 scol solid N 385 1280 M 449 1283 I 435 1241 I C +: 1 1 1 1 scol O ; K +1 1 1 1 scol [ 72 24 ] 0 sd N 541 1344 M 385 1344 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 541 1344 M 385 1344 I K +0.602 0 0.199 1 scol solid N 385 1344 M 445 1366 I 445 1322 I C +: 1 1 1 1 scol O ; K +N 1043 1616 M 1903 1616 I K +N 1903 1616 M 1903 1472 I K +N 1949 1550 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1949 1588 M (*)S +0.602 0 0.199 1 scol N 1043 1616 M 191 1616 I K +N 191 1616 M 191 1465 I K +N 237 1542 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 237 1580 M (*)S +N 1949 1550 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1949 1588 M (*)S +N 237 1542 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 237 1580 M (*)S +N 1186 1556 221 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1186 1594 M (<>)[24 24 11 23 14 23 23 11 20 24 0]xS +: N 1707 306 362 284 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2069 305 M 1706 305 I 1706 590 I 2069 590 I C +K +0 0 0 1 scol 1725 355 M (ConstantPoolGen)[30 23 23 20 11 23 23 11 27 23 23 10 32 23 0]xS +0.602 0 0.199 1 scol N 2069 371 M 1706 371 I 1706 590 I 2069 590 I C +K +N 2069 394 M 1706 394 I 1706 590 I 2069 590 I C +K +0 0 0 1 scol 1765 462 M (addClass\(\))[23 23 23 30 10 23 20 20 14 0]xS +1765 509 M (addMethodRef\(\))[23 23 23 33 23 11 23 23 23 30 23 12 14 0]xS +1765 556 M (addInteger\(\))[23 23 23 10 23 11 23 23 23 14 14 0]xS +: N 1475 683 314 234 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1789 682 M 1474 682 I 1474 917 I 1789 917 I C +K +0 0 0 1 scol 1541 732 M (ClassGen)[30 10 23 20 20 32 23 0]xS +0.602 0 0.199 1 scol N 1789 748 M 1474 748 I 1474 917 I 1789 917 I C +K +N 1789 771 M 1474 771 I 1474 917 I 1789 917 I C +K +0 0 0 1 scol 1533 839 M (addInterface\(\))[23 23 23 10 23 11 23 14 12 23 21 23 14 0]xS +1533 886 M (addMethod\(\))[23 23 23 33 23 11 23 23 23 14 0]xS +0.602 0 0.199 1 scol N 1634 682 M 1634 602 I K +N 1751 636 M 1782 591 I K +N 1751 636 M 1717 681 I K +1 1 1 1 scol [ 72 24 ] 0 sd N 536 1458 M 385 1408 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 536 1458 M 385 1408 I K +0.602 0 0.199 1 scol solid N 385 1408 M 449 1406 I 435 1448 I C +: 1 1 1 1 scol O ; K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica-Oblique +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore diff --git a/docs/eps/classgen.fig b/docs/eps/classgen.fig new file mode 100644 index 00000000..0bb425ff --- /dev/null +++ b/docs/eps/classgen.fig @@ -0,0 +1,302 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +0 32 #f9f9f9 +0 33 #303030 +6 165 2157 5761 10157 +2 1 0 0 32 32 998 0 20 4.000 0 0 0 0 0 4 + 4717 10153 4717 8621 5673 8621 5673 10153 +2 1 0 1 33 33 997 0 -1 4.000 0 0 0 0 0 5 + 4713 10157 4713 8617 5677 8617 5677 10157 4713 10157 +2 1 0 1 33 33 995 0 -1 4.000 0 0 0 0 0 5 + 5177 10157 5177 8617 5677 8617 5677 10157 5177 10157 +2 1 0 1 33 33 994 0 -1 4.000 0 0 0 0 0 5 + 5269 10157 5269 8617 5677 8617 5677 10157 5269 10157 +2 1 0 0 32 32 991 0 20 4.000 0 0 0 0 0 4 + 2325 9277 2325 8345 2817 8345 2817 9277 +2 1 0 1 33 33 990 0 -1 4.000 0 0 0 0 0 5 + 2321 9281 2321 8341 2821 8341 2821 9281 2321 9281 +2 1 0 1 33 33 988 0 -1 4.000 0 0 0 0 0 5 + 2585 9281 2585 8341 2821 8341 2821 9281 2585 9281 +2 1 0 1 33 33 987 0 -1 4.000 0 0 0 0 0 5 + 2677 9281 2677 8341 2821 8341 2821 9281 2677 9281 +2 1 0 0 32 32 986 0 20 4.000 0 0 0 0 0 4 + 925 9721 925 8285 1657 8285 1657 9721 +2 1 0 1 33 33 985 0 -1 4.000 0 0 0 0 0 5 + 921 9725 921 8281 1661 8281 1661 9725 921 9725 +2 1 0 1 33 33 983 0 -1 4.000 0 0 0 0 0 5 + 1185 9725 1185 8281 1661 8281 1661 9725 1185 9725 +2 1 0 1 33 33 982 0 -1 4.000 0 0 0 0 0 5 + 1277 9725 1277 8281 1661 8281 1661 9725 1277 9725 +2 1 0 0 32 32 980 0 20 4.000 0 0 0 0 0 4 + 925 8061 925 6617 1657 6617 1657 8061 +2 1 0 1 33 33 979 0 -1 4.000 0 0 0 0 0 5 + 921 8065 921 6613 1661 6613 1661 8065 921 8065 +2 1 0 1 33 33 977 0 -1 4.000 0 0 0 0 0 5 + 1185 8065 1185 6613 1661 6613 1661 8065 1185 8065 +2 1 0 1 33 33 976 0 -1 4.000 0 0 0 0 0 5 + 1277 8065 1277 6613 1661 6613 1661 8065 1277 8065 +2 1 0 0 32 32 974 0 20 4.000 0 0 0 0 0 4 + 169 6461 169 4889 1901 4889 1901 6461 +2 1 0 1 33 33 973 0 -1 4.000 0 0 0 0 0 5 + 165 6465 165 4885 1905 4885 1905 6465 165 6465 +2 1 0 1 33 33 971 0 -1 4.000 0 0 0 0 0 5 + 429 6465 429 4885 1905 4885 1905 6465 429 6465 +2 1 0 1 33 33 970 0 -1 4.000 0 0 0 0 0 5 + 521 6465 521 4885 1905 4885 1905 6465 521 6465 +2 1 0 0 32 32 963 0 20 4.000 0 0 0 0 0 4 + 2325 8089 2325 6845 2817 6845 2817 8089 +2 1 0 1 33 33 962 0 -1 4.000 0 0 0 0 0 5 + 2321 8093 2321 6841 2821 6841 2821 8093 2321 8093 +2 1 0 1 33 33 960 0 -1 4.000 0 0 0 0 0 5 + 2585 8093 2585 6841 2821 6841 2821 8093 2585 8093 +2 1 0 1 33 33 959 0 -1 4.000 0 0 0 0 0 5 + 2677 8093 2677 6841 2821 6841 2821 8093 2677 8093 +2 1 0 1 33 33 958 0 -1 4.000 0 0 0 0 0 2 + 1953 7605 2321 7605 +2 1 0 1 33 33 957 0 -1 4.000 0 0 0 0 0 2 + 1953 9229 1953 7329 +2 1 0 0 7 7 956 0 20 4.000 0 0 0 0 0 4 + 2321 7605 2081 7517 2081 7693 2321 7605 +2 1 0 1 33 33 955 0 -1 4.000 0 0 0 0 0 4 + 2321 7605 2081 7517 2081 7693 2321 7605 +2 1 0 1 33 33 954 0 -1 4.000 0 0 0 0 0 2 + 1665 9229 1953 9229 +2 1 0 0 32 32 953 0 20 4.000 0 0 0 0 0 4 + 5273 8045 5273 6505 5757 6505 5757 8045 +2 1 0 1 33 33 952 0 -1 4.000 0 0 0 0 0 5 + 5269 8049 5269 6501 5761 6501 5761 8049 5269 8049 +2 1 0 1 33 33 950 0 -1 4.000 0 0 0 0 0 5 + 5533 8049 5533 6501 5761 6501 5761 8049 5533 8049 +2 1 0 1 33 33 949 0 -1 4.000 0 0 0 0 0 5 + 5625 8049 5625 6501 5761 6501 5761 8049 5625 8049 +2 1 1 1 7 7 948 0 -1 4.000 0 0 0 0 0 2 + 5397 8053 5313 8613 +2 1 1 1 0 0 947 0 -1 4.000 0 0 0 0 0 2 + 5397 8053 5313 8613 +2 1 0 0 7 7 946 0 20 4.000 0 0 0 0 0 4 + 5313 8613 5261 8365 5437 8389 5313 8613 +2 1 0 1 33 33 945 0 -1 4.000 0 0 0 0 0 4 + 5313 8613 5261 8365 5437 8389 5313 8613 +2 1 0 0 32 32 944 0 20 4.000 0 0 0 0 0 4 + 4565 8065 4565 6485 5057 6485 5057 8065 +2 1 0 1 33 33 943 0 -1 4.000 0 0 0 0 0 5 + 4561 8069 4561 6481 5061 6481 5061 8069 4561 8069 +2 1 0 1 33 33 941 0 -1 4.000 0 0 0 0 0 5 + 4825 8069 4825 6481 5061 6481 5061 8069 4825 8069 +2 1 0 1 33 33 940 0 -1 4.000 0 0 0 0 0 5 + 4917 8069 4917 6481 5061 6481 5061 8069 4917 8069 +2 1 1 1 7 7 939 0 -1 4.000 0 0 0 0 0 2 + 4957 8073 5053 8613 +2 1 1 1 0 0 938 0 -1 4.000 0 0 0 0 0 2 + 4957 8073 5053 8613 +2 1 0 0 7 7 937 0 20 4.000 0 0 0 0 0 4 + 5053 8613 5097 8361 4921 8393 5053 8613 +2 1 0 1 33 33 936 0 -1 4.000 0 0 0 0 0 4 + 5053 8613 5097 8361 4921 8393 5053 8613 +2 1 0 0 32 32 935 0 20 4.000 0 0 0 0 0 4 + 4401 5873 4401 4325 5733 4325 5733 5873 +2 1 0 1 33 33 934 0 -1 4.000 0 0 0 0 0 5 + 4397 5877 4397 4321 5737 4321 5737 5877 4397 5877 +2 1 0 1 33 33 932 0 -1 4.000 0 0 0 0 0 5 + 4661 5877 4661 4321 5737 4321 5737 5877 4661 5877 +2 1 0 1 33 33 931 0 -1 4.000 0 0 0 0 0 5 + 5129 5877 5129 4321 5737 4321 5737 5877 5129 5877 +2 1 0 1 33 33 926 0 -1 4.000 0 0 0 0 0 2 + 5289 6189 5229 5881 +2 1 0 0 7 7 925 0 20 4.000 0 0 0 0 0 5 + 5229 5881 5309 5977 5269 6093 5189 6001 5229 5881 +2 1 0 1 33 33 924 0 -1 4.000 0 0 0 0 0 5 + 5229 5881 5309 5977 5269 6093 5189 6001 5229 5881 +2 1 0 1 33 33 923 0 -1 4.000 0 0 0 0 0 2 + 5289 6189 5353 6497 +2 1 0 0 7 7 922 0 20 4.000 0 0 0 0 0 4 + 5465 6453 5465 6389 5653 6389 5653 6453 +2 1 0 0 7 7 920 0 20 4.000 0 0 0 0 0 4 + 5465 6453 5465 6389 5653 6389 5653 6453 +2 1 0 1 33 33 918 0 -1 4.000 0 0 0 0 0 2 + 4941 6181 4977 5881 +2 1 0 0 7 7 917 0 20 4.000 0 0 0 0 0 5 + 4977 5881 4905 5981 4953 6097 5025 5997 4977 5881 +2 1 0 1 33 33 916 0 -1 4.000 0 0 0 0 0 5 + 4977 5881 4905 5981 4953 6097 5025 5997 4977 5881 +2 1 0 1 33 33 915 0 -1 4.000 0 0 0 0 0 2 + 4941 6181 4905 6477 +2 1 0 0 7 7 914 0 20 4.000 0 0 0 0 0 4 + 4605 6449 4605 6385 4793 6385 4793 6449 +2 1 0 0 7 7 912 0 20 4.000 0 0 0 0 0 4 + 4605 6449 4605 6385 4793 6385 4793 6449 +2 1 0 0 32 32 910 0 20 4.000 0 0 0 0 0 4 + 1465 3517 1465 2201 2397 2201 2397 3517 +2 1 0 1 33 33 909 0 -1 4.000 0 0 0 0 0 5 + 1461 3521 1461 2197 2401 2197 2401 3521 1461 3521 +2 1 0 1 33 33 907 0 -1 4.000 0 0 0 0 0 5 + 1725 3521 1725 2197 2401 2197 2401 3521 1725 3521 +2 1 0 1 33 33 906 0 -1 4.000 0 0 0 0 0 5 + 1817 3521 1817 2197 2401 2197 2401 3521 1817 3521 +2 1 0 1 33 33 903 0 -1 4.000 0 0 0 0 0 2 + 1501 4205 1717 3525 +2 1 0 0 7 7 902 0 20 4.000 0 0 0 0 0 5 + 1717 3525 1629 3609 1653 3729 1741 3645 1717 3525 +2 1 0 1 33 33 901 0 -1 4.000 0 0 0 0 0 5 + 1717 3525 1629 3609 1653 3729 1741 3645 1717 3525 +2 1 0 1 33 33 900 0 -1 4.000 0 0 0 0 0 2 + 1501 4205 1289 4881 +2 1 0 0 7 7 899 0 20 4.000 0 0 0 0 0 4 + 1429 4913 1429 4821 1617 4821 1617 4913 +2 1 0 0 7 7 897 0 20 4.000 0 0 0 0 0 4 + 1429 4913 1429 4821 1617 4821 1617 4913 +2 1 0 1 33 33 895 0 -1 4.000 0 0 0 0 0 2 + 3397 3913 2405 3201 +2 1 0 0 7 7 894 0 20 4.000 0 0 0 0 0 5 + 2405 3201 2529 3217 2581 3325 2457 3313 2405 3201 +2 1 0 1 33 33 893 0 -1 4.000 0 0 0 0 0 5 + 2405 3201 2529 3217 2581 3325 2457 3313 2405 3201 +2 1 0 1 33 33 892 0 -1 4.000 0 0 0 0 0 2 + 3397 3913 4393 4621 +2 1 0 0 7 7 891 0 20 4.000 0 0 0 0 0 4 + 4321 4405 4321 4341 4509 4341 4509 4405 +2 1 0 0 7 7 889 0 20 4.000 0 0 0 0 0 4 + 4321 4405 4321 4341 4509 4341 4509 4405 +2 1 0 0 32 32 887 0 20 4.000 0 0 0 0 0 4 + 3385 8813 3385 7529 4317 7529 4317 8813 +2 1 0 1 33 33 886 0 -1 4.000 0 0 0 0 0 5 + 3381 8817 3381 7525 4321 7525 4321 8817 3381 8817 +2 1 0 1 33 33 884 0 -1 4.000 0 0 0 0 0 5 + 3645 8817 3645 7525 4321 7525 4321 8817 3645 8817 +2 1 0 1 33 33 883 0 -1 4.000 0 0 0 0 0 5 + 3737 8817 3737 7525 4321 7525 4321 8817 3737 8817 +2 1 0 1 33 33 880 0 -1 4.000 0 0 0 0 0 2 + 2977 8181 3381 8181 +2 1 0 1 33 33 879 0 -1 4.000 0 0 0 0 0 2 + 2977 8805 2977 7517 +2 1 0 0 7 7 878 0 20 4.000 0 0 0 0 0 4 + 3381 8181 3141 8093 3141 8269 3381 8181 +2 1 0 1 33 33 877 0 -1 4.000 0 0 0 0 0 4 + 3381 8181 3141 8093 3141 8269 3381 8181 +2 1 0 1 33 33 876 0 -1 4.000 0 0 0 0 0 2 + 4429 6701 4105 7521 +2 1 0 1 33 33 875 0 -1 4.000 0 0 0 0 0 2 + 4429 6701 4753 5881 +2 1 0 0 32 32 874 0 20 4.000 0 0 0 0 0 4 + 2261 6321 2261 4773 3393 4773 3393 6321 +2 1 0 1 33 33 873 0 -1 4.000 0 0 0 0 0 5 + 2257 6325 2257 4769 3397 4769 3397 6325 2257 6325 +2 1 0 1 33 33 871 0 -1 4.000 0 0 0 0 0 5 + 2521 6325 2521 4769 3397 4769 3397 6325 2521 6325 +2 1 0 1 33 33 870 0 -1 4.000 0 0 0 0 0 5 + 2801 6325 2801 4769 3397 4769 3397 6325 2801 6325 +2 1 0 1 33 33 866 0 -1 4.000 0 0 0 0 0 2 + 2357 4145 2153 3525 +2 1 0 0 7 7 865 0 20 4.000 0 0 0 0 0 5 + 2153 3525 2245 3609 2221 3729 2129 3645 2153 3525 +2 1 0 1 33 33 864 0 -1 4.000 0 0 0 0 0 5 + 2153 3525 2245 3609 2221 3729 2129 3645 2153 3525 +2 1 0 1 33 33 863 0 -1 4.000 0 0 0 0 0 2 + 2357 4145 2565 4765 +2 1 0 0 7 7 862 0 20 4.000 0 0 0 0 0 4 + 2657 4665 2657 4601 2845 4601 2845 4665 +2 1 0 0 7 7 860 0 20 4.000 0 0 0 0 0 4 + 2657 4665 2657 4601 2845 4601 2845 4665 +2 1 0 1 33 33 858 0 -1 4.000 0 0 0 0 0 2 + 3365 6925 3593 7521 +2 1 0 1 33 33 857 0 -1 4.000 0 0 0 0 0 2 + 3365 6925 3129 6329 +2 1 0 1 33 33 856 0 -1 4.000 0 0 0 0 0 2 + 2825 8805 2977 8805 +2 1 0 1 33 33 855 0 -1 4.000 0 0 0 0 0 2 + 2825 7517 2977 7517 +2 1 0 1 33 33 854 0 -1 4.000 0 0 0 0 0 2 + 1665 7329 1953 7329 +2 1 0 0 32 32 853 0 20 4.000 0 0 0 0 0 4 + 3413 3533 3413 2313 3905 2313 3905 3533 +2 1 0 1 33 33 852 0 -1 4.000 0 0 0 0 0 5 + 3409 3537 3409 2309 3909 2309 3909 3537 3409 3537 +2 1 0 1 33 33 850 0 -1 4.000 0 0 0 0 0 5 + 3673 3537 3673 2309 3909 2309 3909 3537 3673 3537 +2 1 0 1 33 33 849 0 -1 4.000 0 0 0 0 0 5 + 3765 3537 3765 2309 3909 2309 3909 3537 3765 3537 +2 1 1 1 7 7 848 0 -1 4.000 0 0 0 0 0 2 + 4561 4317 3913 3313 +2 1 1 1 0 0 847 0 -1 4.000 0 0 0 0 0 2 + 4561 4317 3913 3313 +2 1 0 1 0 0 846 0 -1 4.000 0 0 0 0 0 2 + 3913 3313 4045 3401 +2 1 0 1 0 0 845 0 -1 4.000 0 0 0 0 0 2 + 3913 3313 3941 3465 +2 1 0 0 32 32 844 0 20 4.000 0 0 0 0 0 4 + 4665 3685 4665 2161 5597 2161 5597 3685 +2 1 0 1 33 33 843 0 -1 4.000 0 0 0 0 0 5 + 4661 3689 4661 2157 5601 2157 5601 3689 4661 3689 +2 1 0 1 33 33 841 0 -1 4.000 0 0 0 0 0 5 + 4925 3689 4925 2157 5601 2157 5601 3689 4925 3689 +2 1 0 1 33 33 840 0 -1 4.000 0 0 0 0 0 5 + 5393 3689 5393 2157 5601 2157 5601 3689 5393 3689 +2 1 0 1 33 33 837 0 -1 4.000 0 0 0 0 0 2 + 4285 2921 3913 2921 +2 1 0 0 7 7 836 0 20 4.000 0 0 0 0 0 5 + 3913 2921 4021 2861 4129 2921 4021 2981 3913 2921 +2 1 0 1 33 33 835 0 -1 4.000 0 0 0 0 0 5 + 3913 2921 4021 2861 4129 2921 4021 2981 3913 2921 +2 1 0 1 33 33 834 0 -1 4.000 0 0 0 0 0 2 + 4285 2921 4657 2921 +2 1 0 0 7 7 833 0 20 4.000 0 0 0 0 0 4 + 4525 2737 4525 2673 4713 2673 4713 2737 +2 1 0 0 7 7 831 0 20 4.000 0 0 0 0 0 4 + 4525 2737 4525 2673 4713 2673 4713 2737 +4 0 0 996 -1 16 10 1.5708 4 150 1305 5113 10073 InstructionTargeter\001 +4 0 0 993 -1 16 10 1.5708 4 150 1035 5541 9921 updateTarget()\001 +4 0 0 992 -1 16 10 1.5708 4 120 975 4913 9897 <>\001 +4 0 0 989 -1 16 10 1.5708 4 150 720 2521 9189 BasicType\001 +4 0 0 984 -1 16 10 1.5708 4 150 795 1121 9425 ObjectType\001 +4 0 0 981 -1 16 10 1.5708 4 150 1095 1549 9489 getClassName()\001 +4 0 0 978 -1 16 10 1.5708 4 135 705 1121 7713 ArrayType\001 +4 0 0 975 -1 16 10 1.5708 4 150 1110 1549 7829 getDimensions()\001 +4 0 0 972 -1 16 10 1.5708 4 120 1245 365 6325 ConstantPoolGen\001 +4 0 0 969 -1 16 10 1.5708 4 150 1260 793 6229 getConstantPool()\001 +4 0 0 968 -1 16 10 1.5708 4 150 735 981 6229 addClass()\001 +4 0 0 967 -1 16 10 1.5708 4 150 765 1169 6229 addString()\001 +4 0 0 966 -1 16 10 1.5708 4 150 930 1357 6229 addFieldRef()\001 +4 0 0 965 -1 16 10 1.5708 4 150 1125 1545 6229 addMethodRef()\001 +4 0 0 964 -1 16 10 1.5708 4 150 855 1733 6229 addInteger()\001 +4 0 0 961 -1 16 10 1.5708 4 150 1065 2521 8033 ReferenceType\001 +4 0 0 951 -1 16 10 1.5708 4 120 1245 5469 7933 LocalVariableGen\001 +4 0 0 942 -1 16 10 1.5708 4 150 1365 4761 7981 CodeExceptionGen\001 +4 0 0 933 -1 16 10 1.5708 4 120 825 4597 5525 MethodGen\001 +4 0 0 930 -1 16 10 1.5708 4 150 1200 4837 5641 access_flags : int\001 +4 0 0 929 -1 16 10 1.5708 4 150 1065 5025 5641 max_locals : int\001 +4 0 0 928 -1 16 10 1.5708 4 150 840 5401 5641 getMethod()\001 +4 0 0 927 -1 16 10 1.5708 4 150 1050 5589 5641 addException()\001 +4 0 0 921 -1 16 10 1.5708 4 60 60 5617 6453 *\001 +4 0 0 919 -1 16 10 1.5708 4 60 60 5617 6453 *\001 +4 0 0 913 -1 16 10 1.5708 4 60 60 4757 6449 *\001 +4 0 0 911 -1 16 10 1.5708 4 60 60 4757 6449 *\001 +4 0 0 908 -1 16 10 1.5708 4 120 675 1661 3221 ClassGen\001 +4 0 0 905 -1 16 10 1.5708 4 150 1020 2089 3285 getJavaClass()\001 +4 0 0 904 -1 16 10 1.5708 4 150 975 2277 3285 addInterface()\001 +4 0 0 898 -1 16 10 1.5708 4 105 90 1581 4913 1\001 +4 0 0 896 -1 16 10 1.5708 4 105 90 1581 4913 1\001 +4 0 0 890 -1 16 10 1.5708 4 60 60 4473 4405 *\001 +4 0 0 888 -1 16 10 1.5708 4 60 60 4473 4405 *\001 +4 0 0 885 -1 16 10 1.5708 4 135 345 3581 8353 Type\001 +4 0 0 882 -1 16 10 1.5708 4 135 660 4009 8581 getType()\001 +4 0 0 881 -1 16 10 1.5708 4 150 990 4197 8581 getSignature()\001 +4 0 0 872 -1 16 10 1.5708 4 120 630 2457 5881 FieldGen\001 +4 0 0 869 -1 16 10 1.5708 4 150 1200 2697 6089 access_flags : int\001 +4 0 0 868 -1 16 10 1.5708 4 150 645 3073 6089 getField()\001 +4 0 0 867 -1 16 10 1.5708 4 150 915 3261 6089 setInitValue()\001 +4 0 0 861 -1 16 10 1.5708 4 60 60 2809 4665 *\001 +4 0 0 859 -1 16 10 1.5708 4 60 60 2809 4665 *\001 +4 0 0 851 -1 16 10 1.5708 4 120 960 3609 3421 InstructionList\001 +4 0 0 842 -1 16 10 1.5708 4 120 720 4861 3297 Instruction\001 +4 0 0 839 -1 16 10 1.5708 4 150 660 5101 3453 tag : byte\001 +4 0 0 838 -1 16 10 1.5708 4 150 1215 5289 3453 length, offset : int\001 +4 0 0 832 -1 16 10 1.5708 4 60 60 4677 2737 *\001 +4 0 0 830 -1 16 10 1.5708 4 60 60 4677 2737 *\001 +-6 diff --git a/docs/eps/classloader.eps b/docs/eps/classloader.eps new file mode 100644 index 00000000..4c3a3f3f --- /dev/null +++ b/docs/eps/classloader.eps @@ -0,0 +1,160 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: classloader.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta3 +%%CreationDate: Thu Mar 18 16:45:56 1999 +%%For: dahm@gromit (Markus Dahm) +%%Orientation: Portrait +%%BoundingBox: 0 0 683 144 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-55.0 171.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 3712 m -1000 -1000 l 12712 -1000 l 12712 3712 l cp clip + 0.06299 0.06299 sc +% Polyline +7.500 slw +n 1005 450 m 900 450 900 1020 105 arcto 4 {pop} repeat + 900 1125 3045 1125 105 arcto 4 {pop} repeat + 3150 1125 3150 555 105 arcto 4 {pop} repeat + 3150 450 1005 450 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Helvetica ff 210.00 scf sf +1350 900 m +gs 1 -1 sc (Java class file) col0 sh gr +% Polyline +n 3600 450 m 5850 450 l 5850 1125 l 3600 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +4140 855 m +gs 1 -1 sc (Class loader) col0 sh gr +% Polyline +n 6750 450 m 9000 450 l 9000 1125 l 6750 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +7020 855 m +gs 1 -1 sc (Byte code verifier) col0 sh gr +% Polyline +n 9450 450 m 11700 450 l 11700 1125 l 9450 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +9900 900 m +gs 1 -1 sc (Interpreter/JIT) col0 sh gr +% Polyline +n 4950 1575 m 7875 1575 l 7875 2700 l 4950 2700 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +5175 2475 m +gs 1 -1 sc (Byte code transformations) col0 sh gr +/Courier-Bold ff 210.00 scf sf +5850 2025 m +gs 1 -1 sc (JavaClass) col0 sh gr +% Polyline +gs clippath +3453 735 m 3573 765 l 3453 795 l 3615 795 l 3615 735 l cp +clip +n 3150 765 m 3600 765 l gs col0 s gr gr + +% arrowhead +n 3453 735 m 3573 765 l 3453 795 l 3453 765 l 3453 735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9303 735 m 9423 765 l 9303 795 l 9465 795 l 9465 735 l cp +clip +n 9000 765 m 9450 765 l gs col0 s gr gr + +% arrowhead +n 9303 735 m 9423 765 l 9303 795 l 9303 765 l 9303 735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6105 1428 m 6075 1548 l 6045 1428 l 6045 1590 l 6105 1590 l cp +clip +n 5850 765 m 6075 765 l 6075 1575 l gs col0 s gr gr + +% arrowhead +n 6105 1428 m 6075 1548 l 6045 1428 l 6075 1428 l 6105 1428 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6603 735 m 6723 765 l 6603 795 l 6765 795 l 6765 735 l cp +clip +n 6525 1575 m 6525 765 l 6750 765 l gs col0 s gr gr + +% arrowhead +n 6603 735 m 6723 765 l 6603 795 l 6603 765 l 6603 735 l cp gs 0.00 setgray ef gr col0 s +$F2psEnd +rs diff --git a/docs/eps/classloader.fig b/docs/eps/classloader.fig new file mode 100644 index 00000000..729d7749 --- /dev/null +++ b/docs/eps/classloader.fig @@ -0,0 +1,47 @@ +#FIG 3.2 +Portrait +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 900 450 3150 1125 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 3150 1125 3150 450 900 450 900 1125 3150 1125 +4 0 0 100 0 16 14 0.0000 4 165 1380 1350 900 Java class file\001 +-6 +6 3600 450 5850 1125 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 3600 450 5850 450 5850 1125 3600 1125 3600 450 +4 0 0 100 0 16 14 0.0000 4 165 1215 4140 855 Class loader\001 +-6 +6 6750 450 9000 1125 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 6750 450 9000 450 9000 1125 6750 1125 6750 450 +4 0 0 100 0 16 14 0.0000 4 210 1665 7020 855 Byte code verifier\001 +-6 +6 9450 450 11700 1125 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 9450 450 11700 450 11700 1125 9450 1125 9450 450 +4 0 0 100 0 16 14 0.0000 4 210 1410 9900 900 Interpreter/JIT\001 +-6 +6 4950 1575 7875 2700 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 4950 1575 7875 1575 7875 2700 4950 2700 4950 1575 +4 0 0 100 0 16 14 0.0000 4 210 2505 5175 2475 Byte code transformations\001 +4 0 0 100 0 14 14 0.0000 4 150 1215 5850 2025 JavaClass\001 +-6 +2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3150 765 3600 765 +2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 9000 765 9450 765 +2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + 5850 765 6075 765 6075 1575 +2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + 6525 1575 6525 765 6750 765 diff --git a/docs/eps/constantpool.eps b/docs/eps/constantpool.eps new file mode 100644 index 00000000..4d3d5bd7 --- /dev/null +++ b/docs/eps/constantpool.eps @@ -0,0 +1,399 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:45:21 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 383 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1677.488 -356.303 translate +90 rotate +2.035 2.035 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 1409 506 185 84 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 1594 505 M 1408 505 I 1408 590 I 1594 590 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S18 F0 [24.66 0 0 -24.66 0 0 ] mFS +F0S18 Ji +1433 537 M (ConstantCP)[18 14 14 13 7 14 14 7 18 0]xS +0.602 0 0.199 1 scol N 1594 551 M 1408 551 I 1408 590 I 1594 590 I C +K +N 1594 565 M 1408 565 I 1408 590 I 1594 590 I C +K +: N 1292 714 375 85 rp C +1 1 0.801 1 scol L ; N 1667 713 M 1291 713 I 1291 799 I 1667 799 I C +K +0 0 0 1 scol 1324 745 M (ConstantInterfaceMethodref)[18 14 14 13 7 14 14 7 6 14 7 14 8 7 14 13 14 21 14 7 14 14 14 8 14 0]xS +0.602 0 0.199 1 scol N 1667 759 M 1291 759 I 1291 799 I 1667 799 I C +K +N 1667 773 M 1291 773 I 1291 799 I 1667 799 I C +K +: N 1710 714 262 85 rp C +1 1 0.801 1 scol L ; N 1972 713 M 1709 713 I 1709 799 I 1972 799 I C +K +0 0 0 1 scol 1734 745 M (ConstantMethodref)[18 14 14 13 7 14 14 7 21 14 7 14 14 14 8 14 0]xS +0.602 0 0.199 1 scol N 1972 759 M 1709 759 I 1709 799 I 1972 799 I C +K +N 1972 773 M 1709 773 I 1709 799 I 1972 799 I C +K +: N 1011 714 235 85 rp C +1 1 0.801 1 scol L ; N 1246 713 M 1010 713 I 1010 799 I 1246 799 I C +K +0 0 0 1 scol 1036 745 M (ConstantFieldref)[18 14 14 13 7 14 14 7 15 6 14 6 14 8 14 0]xS +0.602 0 0.199 1 scol N 1246 759 M 1010 759 I 1010 799 I 1246 799 I C +K +N 1246 773 M 1010 773 I 1010 799 I 1246 799 I C +K +: N 1516 58 213 125 rp C +1 1 0.801 1 scol L ; N 1729 57 M 1515 57 I 1515 183 I 1729 183 I C +K +0 0 0 1 scol 1546 89 M (ConstantPool)[18 14 14 13 7 14 14 7 17 14 14 0]xS +0.602 0 0.199 1 scol N 1729 103 M 1515 103 I 1515 183 I 1729 183 I C +K +N 1729 116 M 1515 116 I 1515 183 I 1729 183 I C +K +0 0 0 1 scol 1555 158 M (getConstant\(\))[14 14 7 18 14 14 13 7 14 14 7 8 0]xS +: N 1550 265 144 84 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1694 264 M 1549 264 I 1549 349 I 1694 349 I C +K +0 0 0 1 scol 1571 296 M (Constant)[18 14 14 13 7 14 14 0]xS +0.602 0 0.199 1 scol N 1694 310 M 1549 310 I 1549 349 I 1694 349 I C +K +N 1694 323 M 1549 323 I 1549 349 I 1694 349 I C +K +N 1622 223 M 1622 184 I K +N 1652 175 14 29 rp C +1 1 1 1 scol L 0 0 0 1 scol 1652 198 M (1)S +0.602 0 0.199 1 scol N 1622 184 M 1632 203 I 1622 221 I 1612 203 I 1622 184 I C +: 1 1 1 1 scol O ; K +N 1622 223 M 1622 263 I K +N 1654 245 11 28 rp C +1 1 1 1 scol L 0 0 0 1 scol 1654 268 M (*)S +N 1652 175 14 29 rp C +1 1 1 1 scol L 0 0 0 1 scol 1652 198 M (1)S +N 1654 245 11 28 rp C +1 1 1 1 scol L 0 0 0 1 scol 1654 268 M (*)S +0.602 0 0.199 1 scol N 1494 655 M 1494 591 I K +N 1123 655 M 1828 655 I K +N 1494 591 M 1509 632 I 1479 632 I C +: 1 1 1 1 scol O ; K +N 1123 713 M 1123 655 I K +: N 1743 506 219 84 rp C +1 1 0.801 1 scol L ; N 1962 505 M 1742 505 I 1742 590 I 1962 590 I C +K +0 0 0 1 scol 1769 537 M (ConstantString)[18 14 14 13 7 14 14 7 17 7 8 6 14 0]xS +0.602 0 0.199 1 scol N 1962 551 M 1742 551 I 1742 590 I 1962 590 I C +K +N 1962 565 M 1742 565 I 1742 590 I 1962 590 I C +K +: N 822 506 219 84 rp C +1 1 0.801 1 scol L ; N 1041 505 M 821 505 I 821 590 I 1041 590 I C +K +0 0 0 1 scol 849 537 M (ConstantClass)[18 14 14 13 7 14 14 7 18 6 14 13 0]xS +0.602 0 0.199 1 scol N 1041 551 M 821 551 I 821 590 I 1041 590 I C +K +N 1041 565 M 821 565 I 821 590 I 1041 590 I C +K +: N 1236 254 224 84 rp C +1 1 0.801 1 scol L ; N 1460 253 M 1235 253 I 1235 338 I 1460 338 I C +K +0 0 0 1 scol 1259 285 M (ConstantInteger)[18 14 14 13 7 14 14 7 6 14 7 14 14 14 0]xS +0.602 0 0.199 1 scol N 1460 299 M 1235 299 I 1235 338 I 1460 338 I C +K +N 1460 312 M 1235 312 I 1235 338 I 1460 338 I C +K +: N 958 254 232 84 rp C +1 1 0.801 1 scol L ; N 1190 253 M 957 253 I 957 338 I 1190 338 I C +K +0 0 0 1 scol 984 285 M (ConstantDouble)[18 14 14 13 7 14 14 7 18 14 14 14 6 0]xS +0.602 0 0.199 1 scol N 1190 299 M 957 299 I 957 338 I 1190 338 I C +K +N 1190 312 M 957 312 I 957 338 I 1190 338 I C +K +: N 1102 506 207 84 rp C +1 1 0.801 1 scol L ; N 1309 505 M 1101 505 I 1101 590 I 1309 590 I C +K +0 0 0 1 scol 1127 537 M (ConstantFloat)[18 14 14 13 7 14 14 7 15 6 14 14 0]xS +0.602 0 0.199 1 scol N 1309 551 M 1101 551 I 1101 590 I 1309 590 I C +K +N 1309 565 M 1101 565 I 1101 590 I 1309 590 I C +K +: N 708 254 206 84 rp C +1 1 0.801 1 scol L ; N 914 253 M 707 253 I 707 338 I 914 338 I C +K +0 0 0 1 scol 732 285 M (ConstantLong)[18 14 14 13 7 14 14 7 14 14 14 0]xS +0.602 0 0.199 1 scol N 914 299 M 707 299 I 707 338 I 914 338 I C +K +N 914 312 M 707 312 I 707 338 I 914 338 I C +K +: N 2025 506 246 84 rp C +1 1 0.801 1 scol L ; N 2271 505 M 2024 505 I 2024 590 I 2271 590 I C +K +0 0 0 1 scol 2051 537 M (ConstantUnicode)[18 14 14 13 7 14 14 7 18 14 6 13 14 14 0]xS +0.602 0 0.199 1 scol N 2271 545 M 2024 545 I 2024 590 I 2271 590 I C +K +N 2271 558 M 2024 558 I 2024 590 I 2271 590 I C +K +: N 1790 254 322 84 rp C +1 1 0.801 1 scol L ; N 2112 253 M 1789 253 I 1789 338 I 2112 338 I C +K +0 0 0 1 scol 1817 285 M (ConstantNameAndType)[18 14 14 13 7 14 14 7 18 14 22 14 17 14 14 14 12 14 0]xS +0.602 0 0.199 1 scol N 2112 299 M 1789 299 I 1789 338 I 2112 338 I C +K +N 2112 312 M 1789 312 I 1789 338 I 2112 338 I C +K +: N 2172 254 194 84 rp C +1 1 0.801 1 scol L ; N 2366 253 M 2171 253 I 2171 338 I 2366 338 I C +K +0 0 0 1 scol 2195 285 M (ConstantUtf8)[18 14 14 13 7 14 14 7 18 7 7 0]xS +0.602 0 0.199 1 scol N 2366 293 M 2171 293 I 2171 338 I 2366 338 I C +K +N 2366 306 M 2171 306 I 2171 338 I 2366 338 I C +K +N 1626 428 M 1626 350 I K +N 809 428 M 2269 428 I K +N 1626 350 M 1641 391 I 1611 391 I C +: 1 1 1 1 scol O ; K +N 933 505 M 933 428 I K +N 1848 505 M 1848 428 I K +N 1068 339 M 1068 428 I K +N 2146 505 M 2146 428 I K +N 809 339 M 809 428 I K +N 2269 339 M 2269 428 I K +N 1500 505 M 1500 428 I K +N 1336 339 M 1336 428 I K +N 1201 505 M 1201 428 I K +N 1926 339 M 1926 428 I K +N 1468 713 M 1468 655 I K +N 1828 713 M 1828 655 I K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore diff --git a/docs/eps/constantpool.fig b/docs/eps/constantpool.fig new file mode 100644 index 00000000..1c7b738c --- /dev/null +++ b/docs/eps/constantpool.fig @@ -0,0 +1,211 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +0 32 #f9f9f9 +0 33 #303030 +6 75 0 4500 9825 +2 1 0 0 32 32 998 0 20 4.000 0 0 0 0 0 4 + 2747 5661 2747 4585 3239 4585 3239 5661 +2 1 0 1 33 33 997 0 -1 4.000 0 0 0 0 0 5 + 2743 5665 2743 4581 3243 4581 3243 5665 2743 5665 +2 1 0 1 33 33 995 0 -1 4.000 0 0 0 0 0 5 + 3015 5665 3015 4581 3243 4581 3243 5665 3015 5665 +2 1 0 1 33 33 994 0 -1 4.000 0 0 0 0 0 5 + 3107 5665 3107 4581 3243 4581 3243 5665 3107 5665 +2 1 0 0 32 32 993 0 20 4.000 0 0 0 0 0 4 + 3963 6345 3963 4157 4455 4157 4455 6345 +2 1 0 1 33 33 992 0 -1 4.000 0 0 0 0 0 5 + 3959 6349 3959 4153 4459 4153 4459 6349 3959 6349 +2 1 0 1 33 33 990 0 -1 4.000 0 0 0 0 0 5 + 4231 6349 4231 4153 4459 4153 4459 6349 4231 6349 +2 1 0 1 33 33 989 0 -1 4.000 0 0 0 0 0 5 + 4323 6349 4323 4153 4459 4153 4459 6349 4323 6349 +2 1 0 0 32 32 988 0 20 4.000 0 0 0 0 0 4 + 3963 3905 3963 2373 4455 2373 4455 3905 +2 1 0 1 33 33 987 0 -1 4.000 0 0 0 0 0 5 + 3959 3909 3959 2369 4459 2369 4459 3909 3959 3909 +2 1 0 1 33 33 985 0 -1 4.000 0 0 0 0 0 5 + 4231 3909 4231 2369 4459 2369 4459 3909 4231 3909 +2 1 0 1 33 33 984 0 -1 4.000 0 0 0 0 0 5 + 4323 3909 4323 2369 4459 2369 4459 3909 4323 3909 +2 1 0 0 32 32 983 0 20 4.000 0 0 0 0 0 4 + 3963 7985 3963 6613 4455 6613 4455 7985 +2 1 0 1 33 33 982 0 -1 4.000 0 0 0 0 0 5 + 3959 7989 3959 6609 4459 6609 4459 7989 3959 7989 +2 1 0 1 33 33 980 0 -1 4.000 0 0 0 0 0 5 + 4231 7989 4231 6609 4459 6609 4459 7989 4231 7989 +2 1 0 1 33 33 979 0 -1 4.000 0 0 0 0 0 5 + 4323 7989 4323 6609 4459 6609 4459 7989 4323 7989 +2 1 0 0 32 32 978 0 20 4.000 0 0 0 0 0 4 + 131 5041 131 3797 863 3797 863 5041 +2 1 0 1 33 33 977 0 -1 4.000 0 0 0 0 0 5 + 127 5045 127 3793 867 3793 867 5045 127 5045 +2 1 0 1 33 33 975 0 -1 4.000 0 0 0 0 0 5 + 399 5045 399 3793 867 3793 867 5045 399 5045 +2 1 0 1 33 33 974 0 -1 4.000 0 0 0 0 0 5 + 491 5045 491 3793 867 3793 867 5045 491 5045 +2 1 0 0 32 32 972 0 20 4.000 0 0 0 0 0 4 + 1339 4841 1339 3997 1831 3997 1831 4841 +2 1 0 1 33 33 971 0 -1 4.000 0 0 0 0 0 5 + 1335 4845 1335 3993 1835 3993 1835 4845 1335 4845 +2 1 0 1 33 33 969 0 -1 4.000 0 0 0 0 0 5 + 1607 4845 1607 3993 1835 3993 1835 4845 1607 4845 +2 1 0 1 33 33 968 0 -1 4.000 0 0 0 0 0 5 + 1699 4845 1699 3993 1835 3993 1835 4845 1699 4845 +2 1 0 1 33 33 967 0 -1 4.000 0 0 0 0 0 2 + 1099 4417 871 4417 +2 1 0 0 7 7 966 0 20 4.000 0 0 0 0 0 4 + 807 4245 807 4153 995 4153 995 4245 +2 1 0 0 7 7 964 0 20 4.000 0 0 0 0 0 5 + 871 4417 979 4357 1087 4417 979 4477 871 4417 +2 1 0 1 33 33 963 0 -1 4.000 0 0 0 0 0 5 + 871 4417 979 4357 1087 4417 979 4477 871 4417 +2 1 0 1 33 33 962 0 -1 4.000 0 0 0 0 0 2 + 1099 4417 1331 4417 +2 1 0 0 7 7 961 0 20 4.000 0 0 0 0 0 4 + 1215 4233 1215 4169 1403 4169 1403 4233 +2 1 0 0 7 7 959 0 20 4.000 0 0 0 0 0 4 + 807 4245 807 4153 995 4153 995 4245 +2 1 0 0 7 7 957 0 20 4.000 0 0 0 0 0 4 + 1215 4233 1215 4169 1403 4169 1403 4233 +2 1 0 1 33 33 955 0 -1 4.000 0 0 0 0 0 2 + 3619 5165 3247 5165 +2 1 0 1 33 33 954 0 -1 4.000 0 0 0 0 0 2 + 3619 7329 3619 3217 +2 1 0 0 7 7 953 0 20 4.000 0 0 0 0 0 4 + 3247 5165 3487 5077 3487 5253 3247 5165 +2 1 0 1 33 33 952 0 -1 4.000 0 0 0 0 0 4 + 3247 5165 3487 5077 3487 5253 3247 5165 +2 1 0 1 33 33 951 0 -1 4.000 0 0 0 0 0 2 + 3959 7329 3619 7329 +2 1 0 0 32 32 950 0 20 4.000 0 0 0 0 0 4 + 2747 3713 2747 2437 3239 2437 3239 3713 +2 1 0 1 33 33 949 0 -1 4.000 0 0 0 0 0 5 + 2743 3717 2743 2433 3243 2433 3243 3717 2743 3717 +2 1 0 1 33 33 947 0 -1 4.000 0 0 0 0 0 5 + 3015 3717 3015 2433 3243 2433 3243 3717 3015 3717 +2 1 0 1 33 33 946 0 -1 4.000 0 0 0 0 0 5 + 3107 3717 3107 2433 3243 2433 3243 3717 3107 3717 +2 1 0 0 32 32 945 0 20 4.000 0 0 0 0 0 4 + 2747 9089 2747 7813 3239 7813 3239 9089 +2 1 0 1 33 33 944 0 -1 4.000 0 0 0 0 0 5 + 2743 9093 2743 7809 3243 7809 3243 9093 2743 9093 +2 1 0 1 33 33 942 0 -1 4.000 0 0 0 0 0 5 + 3015 9093 3015 7809 3243 7809 3243 9093 3015 9093 +2 1 0 1 33 33 941 0 -1 4.000 0 0 0 0 0 5 + 3107 9093 3107 7809 3243 7809 3243 9093 3107 9093 +2 1 0 0 32 32 940 0 20 4.000 0 0 0 0 0 4 + 1275 6673 1275 5365 1767 5365 1767 6673 +2 1 0 1 33 33 939 0 -1 4.000 0 0 0 0 0 5 + 1271 6677 1271 5361 1771 5361 1771 6677 1271 6677 +2 1 0 1 33 33 937 0 -1 4.000 0 0 0 0 0 5 + 1543 6677 1543 5361 1771 5361 1771 6677 1543 6677 +2 1 0 1 33 33 936 0 -1 4.000 0 0 0 0 0 5 + 1635 6677 1635 5361 1771 5361 1771 6677 1635 6677 +2 1 0 0 32 32 935 0 20 4.000 0 0 0 0 0 4 + 1275 8297 1275 6941 1767 6941 1767 8297 +2 1 0 1 33 33 934 0 -1 4.000 0 0 0 0 0 5 + 1271 8301 1271 6937 1771 6937 1771 8301 1271 8301 +2 1 0 1 33 33 932 0 -1 4.000 0 0 0 0 0 5 + 1543 8301 1543 6937 1771 6937 1771 8301 1543 8301 +2 1 0 1 33 33 931 0 -1 4.000 0 0 0 0 0 5 + 1635 8301 1635 6937 1771 6937 1771 8301 1635 8301 +2 1 0 0 32 32 930 0 20 4.000 0 0 0 0 0 4 + 2747 7453 2747 6249 3239 6249 3239 7453 +2 1 0 1 33 33 929 0 -1 4.000 0 0 0 0 0 5 + 2743 7457 2743 6245 3243 6245 3243 7457 2743 7457 +2 1 0 1 33 33 927 0 -1 4.000 0 0 0 0 0 5 + 3015 7457 3015 6245 3243 6245 3243 7457 3015 7457 +2 1 0 1 33 33 926 0 -1 4.000 0 0 0 0 0 5 + 3107 7457 3107 6245 3243 6245 3243 7457 3107 7457 +2 1 0 0 32 32 925 0 20 4.000 0 0 0 0 0 4 + 1275 9757 1275 8553 1767 8553 1767 9757 +2 1 0 1 33 33 924 0 -1 4.000 0 0 0 0 0 5 + 1271 9761 1271 8549 1771 8549 1771 9761 1271 9761 +2 1 0 1 33 33 922 0 -1 4.000 0 0 0 0 0 5 + 1543 9761 1543 8549 1771 8549 1771 9761 1543 9761 +2 1 0 1 33 33 921 0 -1 4.000 0 0 0 0 0 5 + 1635 9761 1635 8549 1771 8549 1771 9761 1635 9761 +2 1 0 0 32 32 920 0 20 4.000 0 0 0 0 0 4 + 2747 2065 2747 630 3239 630 3239 2065 +2 1 0 1 33 33 919 0 -1 4.000 0 0 0 0 0 5 + 2743 2069 2743 626 3243 626 3243 2069 2743 2069 +2 1 0 1 33 33 917 0 -1 4.000 0 0 0 0 0 5 + 3015 2069 3015 626 3243 626 3243 2069 3015 2069 +2 1 0 1 33 33 916 0 -1 4.000 0 0 0 0 0 5 + 3107 2069 3107 626 3243 626 3243 2069 3107 2069 +2 1 0 0 32 32 915 0 20 4.000 0 0 0 0 0 4 + 1275 3441 1275 1557 1767 1557 1767 3441 +2 1 0 1 33 33 914 0 -1 4.000 0 0 0 0 0 5 + 1271 3445 1271 1553 1771 1553 1771 3445 1271 3445 +2 1 0 1 33 33 912 0 -1 4.000 0 0 0 0 0 5 + 1543 3445 1543 1553 1771 1553 1771 3445 1543 3445 +2 1 0 1 33 33 911 0 -1 4.000 0 0 0 0 0 5 + 1635 3445 1635 1553 1771 1553 1771 3445 1635 3445 +2 1 0 0 32 32 910 0 20 4.000 0 0 0 0 0 4 + 1275 1209 1275 78 1767 78 1767 1209 +2 1 0 1 33 33 909 0 -1 4.000 0 0 0 0 0 5 + 1271 1213 1271 74 1771 74 1771 1213 1271 1213 +2 1 0 1 33 33 907 0 -1 4.000 0 0 0 0 0 5 + 1543 1213 1543 74 1771 74 1771 1213 1543 1213 +2 1 0 1 33 33 906 0 -1 4.000 0 0 0 0 0 5 + 1635 1213 1635 74 1771 74 1771 1213 1635 1213 +2 1 0 1 33 33 905 0 -1 4.000 0 0 0 0 0 2 + 2295 4393 1839 4393 +2 1 0 1 33 33 904 0 -1 4.000 0 0 0 0 0 2 + 2295 9165 2295 642 +2 1 0 0 7 7 903 0 20 4.000 0 0 0 0 0 4 + 1839 4393 2079 4305 2079 4481 1839 4393 +2 1 0 1 33 33 902 0 -1 4.000 0 0 0 0 0 4 + 1839 4393 2079 4305 2079 4481 1839 4393 +2 1 0 1 33 33 901 0 -1 4.000 0 0 0 0 0 2 + 2743 8441 2295 8441 +2 1 0 1 33 33 900 0 -1 4.000 0 0 0 0 0 2 + 2743 3097 2295 3097 +2 1 0 1 33 33 899 0 -1 4.000 0 0 0 0 0 2 + 1775 7653 2295 7653 +2 1 0 1 33 33 898 0 -1 4.000 0 0 0 0 0 2 + 2743 1357 2295 1357 +2 1 0 1 33 33 897 0 -1 4.000 0 0 0 0 0 2 + 1775 9165 2295 9165 +2 1 0 1 33 33 896 0 -1 4.000 0 0 0 0 0 2 + 1775 642 2295 642 +2 1 0 1 33 33 895 0 -1 4.000 0 0 0 0 0 2 + 2743 5129 2295 5129 +2 1 0 1 33 33 894 0 -1 4.000 0 0 0 0 0 2 + 1775 6089 2295 6089 +2 1 0 1 33 33 893 0 -1 4.000 0 0 0 0 0 2 + 2743 6877 2295 6877 +2 1 0 1 33 33 892 0 -1 4.000 0 0 0 0 0 2 + 1775 2641 2295 2641 +2 1 0 1 33 33 891 0 -1 4.000 0 0 0 0 0 2 + 3959 5317 3619 5317 +2 1 0 1 33 33 890 0 -1 4.000 0 0 0 0 0 2 + 3959 3217 3619 3217 +4 0 0 996 -1 16 10 1.5708 4 105 840 2951 5565 ConstantCP\001 +4 0 0 991 -1 16 10 1.5708 4 120 1950 4167 6269 ConstantInterfaceMethodref\001 +4 0 0 986 -1 16 10 1.5708 4 120 1335 4167 3837 ConstantMethodref\001 +4 0 0 981 -1 16 10 1.5708 4 120 1140 4167 7901 ConstantFieldref\001 +4 0 0 976 -1 16 10 1.5708 4 120 945 335 4913 ConstantPool\001 +4 0 0 973 -1 16 10 1.5708 4 135 945 763 4809 getConstant()\001 +4 0 0 970 -1 16 10 1.5708 4 105 630 1543 4745 Constant\001 +4 0 0 965 -1 16 10 1.5708 4 105 90 959 4245 1\001 +4 0 0 960 -1 16 10 1.5708 4 60 60 1367 4233 *\001 +4 0 0 958 -1 16 10 1.5708 4 105 90 959 4245 1\001 +4 0 0 956 -1 16 10 1.5708 4 60 60 1367 4233 *\001 +4 0 0 948 -1 16 10 1.5708 4 150 1035 2951 3613 ConstantString\001 +4 0 0 943 -1 16 10 1.5708 4 120 1005 2951 8985 ConstantClass\001 +4 0 0 938 -1 16 10 1.5708 4 135 1125 1479 6601 ConstantInteger\001 +4 0 0 933 -1 16 10 1.5708 4 120 1125 1479 8209 ConstantDouble\001 +4 0 0 928 -1 16 10 1.5708 4 120 975 2951 7361 ConstantFloat\001 +4 0 0 923 -1 16 10 1.5708 4 135 990 1479 9665 ConstantLong\001 +4 0 0 918 -1 16 10 1.5708 4 120 1200 2951 1977 ConstantUnicode\001 +4 0 0 913 -1 16 10 1.5708 4 150 1665 1479 3377 ConstantNameAndType\001 +4 0 0 908 -1 16 10 1.5708 4 120 915 1479 1121 ConstantUtf8\001 +-6 diff --git a/docs/eps/diagram.fig b/docs/eps/diagram.fig new file mode 100644 index 00000000..cc81536b --- /dev/null +++ b/docs/eps/diagram.fig @@ -0,0 +1,351 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +0 32 #f9f9f9 +0 33 #303030 +0 34 #7e7e7e +6 600 300 5925 10575 +2 1 0 0 32 32 998 0 20 4.000 0 0 0 0 0 4 + 4527 8915 4527 7615 5019 7615 5019 8915 +2 1 0 1 33 33 997 0 -1 4.000 0 0 0 0 0 5 + 4523 8919 4523 7611 5023 7611 5023 8919 4523 8919 +2 1 0 1 33 33 995 0 -1 4.000 0 0 0 0 0 5 + 4763 8919 4763 7611 5023 7611 5023 8919 4763 8919 +2 1 0 1 33 33 994 0 -1 4.000 0 0 0 0 0 5 + 4855 8919 4855 7611 5023 7611 5023 8919 4855 8919 +2 1 0 0 32 32 993 0 20 4.000 0 0 0 0 0 4 + 4591 4831 4591 3379 5083 3379 5083 4831 +2 1 0 1 33 33 992 0 -1 4.000 0 0 0 0 0 5 + 4587 4835 4587 3375 5087 3375 5087 4835 4587 4835 +2 1 0 1 33 33 990 0 -1 4.000 0 0 0 0 0 5 + 4827 4835 4827 3375 5087 3375 5087 4835 4827 4835 +2 1 0 1 33 33 989 0 -1 4.000 0 0 0 0 0 5 + 4919 4835 4919 3375 5087 3375 5087 4835 4919 4835 +2 1 0 0 32 32 988 0 20 4.000 0 0 0 0 0 4 + 4555 7183 4555 5507 5887 5507 5887 7183 +2 1 0 1 33 33 987 0 -1 4.000 0 0 0 0 0 5 + 4551 7187 4551 5503 5891 5503 5891 7187 4551 7187 +2 1 0 1 33 33 985 0 -1 4.000 0 0 0 0 0 5 + 4791 7187 4791 5503 5891 5503 5891 7187 4791 7187 +2 1 0 1 33 33 984 0 -1 4.000 0 0 0 0 0 5 + 5447 7187 5447 5503 5891 5503 5891 7187 5447 7187 +2 1 0 1 33 33 979 0 -1 4.000 0 0 0 0 0 2 + 5019 5171 5075 5499 +2 1 0 0 7 7 978 0 20 4.000 0 0 0 0 0 5 + 5075 5499 5115 5379 5039 5287 4995 5403 5075 5499 +2 1 0 1 33 33 977 0 -1 4.000 0 0 0 0 0 5 + 5075 5499 5115 5379 5039 5287 4995 5403 5075 5499 +2 1 0 1 33 33 976 0 -1 4.000 0 0 0 0 0 2 + 5019 5171 4963 4839 +2 1 0 0 7 7 975 0 20 4.000 0 0 0 0 0 4 + 4667 4947 4667 4855 4855 4855 4855 4947 +2 1 0 0 7 7 973 0 20 4.000 0 0 0 0 0 4 + 4667 4947 4667 4855 4855 4855 4855 4947 +2 1 0 0 32 32 971 0 20 4.000 0 0 0 0 0 4 + 5423 3467 5423 1927 5915 1927 5915 3467 +2 1 0 1 33 33 970 0 -1 4.000 0 0 0 0 0 5 + 5419 3471 5419 1923 5919 1923 5919 3471 5419 3471 +2 1 0 1 33 33 968 0 -1 4.000 0 0 0 0 0 5 + 5659 3471 5659 1923 5919 1923 5919 3471 5659 3471 +2 1 0 1 33 33 967 0 -1 4.000 0 0 0 0 0 5 + 5751 3471 5751 1923 5919 1923 5919 3471 5751 3471 +2 1 0 1 33 33 966 0 -1 4.000 0 0 0 0 0 2 + 5447 4487 5323 5499 +2 1 0 0 7 7 965 0 20 4.000 0 0 0 0 0 5 + 5323 5499 5275 5383 5351 5283 5395 5399 5323 5499 +2 1 0 1 33 33 964 0 -1 4.000 0 0 0 0 0 5 + 5323 5499 5275 5383 5351 5283 5395 5399 5323 5499 +2 1 0 1 33 33 963 0 -1 4.000 0 0 0 0 0 2 + 5447 4487 5571 3475 +2 1 0 0 7 7 962 0 20 4.000 0 0 0 0 0 4 + 5683 3647 5683 3555 5871 3555 5871 3647 +2 1 0 0 7 7 960 0 20 4.000 0 0 0 0 0 4 + 5683 3647 5683 3555 5871 3555 5871 3647 +2 1 0 0 32 32 958 0 20 4.000 0 0 0 0 0 4 + 3055 4359 3055 3211 3547 3211 3547 4359 +2 1 0 1 33 33 957 0 -1 4.000 0 0 0 0 0 5 + 3051 4363 3051 3207 3551 3207 3551 4363 3051 4363 +2 1 0 1 33 33 955 0 -1 4.000 0 0 0 0 0 5 + 3291 4363 3291 3207 3551 3207 3551 4363 3291 4363 +2 1 0 1 33 33 954 0 -1 4.000 0 0 0 0 0 5 + 3383 4363 3383 3207 3551 3207 3551 4363 3383 4363 +2 1 0 0 32 32 953 0 20 4.000 0 0 0 0 0 4 + 3055 2867 3055 1887 3547 1887 3547 2867 +2 1 0 1 33 33 952 0 -1 4.000 0 0 0 0 0 5 + 3051 2871 3051 1883 3551 1883 3551 2871 3051 2871 +2 1 0 1 33 33 950 0 -1 4.000 0 0 0 0 0 5 + 3291 2871 3291 1883 3551 1883 3551 2871 3291 2871 +2 1 0 1 33 33 949 0 -1 4.000 0 0 0 0 0 5 + 3383 2871 3383 1883 3551 1883 3551 2871 3383 2871 +2 1 0 0 32 32 948 0 20 4.000 0 0 0 0 0 4 + 4527 10303 4527 9299 5019 9299 5019 10303 +2 1 0 1 33 33 947 0 -1 4.000 0 0 0 0 0 5 + 4523 10307 4523 9295 5023 9295 5023 10307 4523 10307 +2 1 0 1 33 33 945 0 -1 4.000 0 0 0 0 0 5 + 4763 10307 4763 9295 5023 9295 5023 10307 4763 10307 +2 1 0 1 33 33 944 0 -1 4.000 0 0 0 0 0 5 + 4855 10307 4855 9295 5023 9295 5023 10307 4855 10307 +2 1 0 0 32 32 943 0 20 4.000 0 0 0 0 0 4 + 4591 1843 4591 991 5083 991 5083 1843 +2 1 0 1 33 33 942 0 -1 4.000 0 0 0 0 0 5 + 4587 1847 4587 987 5087 987 5087 1847 4587 1847 +2 1 0 1 33 33 940 0 -1 4.000 0 0 0 0 0 5 + 4827 1847 4827 987 5087 987 5087 1847 4827 1847 +2 1 0 1 33 33 939 0 -1 4.000 0 0 0 0 0 5 + 4919 1847 4919 987 5087 987 5087 1847 4919 1847 +2 1 0 0 32 32 938 0 20 4.000 0 0 0 0 0 4 + 3055 1547 3055 647 3547 647 3547 1547 +2 1 0 1 33 33 937 0 -1 4.000 0 0 0 0 0 5 + 3051 1551 3051 643 3551 643 3551 1551 3051 1551 +2 1 0 1 33 33 935 0 -1 4.000 0 0 0 0 0 5 + 3291 1551 3291 643 3551 643 3551 1551 3291 1551 +2 1 0 1 33 33 934 0 -1 4.000 0 0 0 0 0 5 + 3383 1551 3383 643 3551 643 3551 1551 3383 1551 +2 1 0 0 32 32 933 0 20 4.000 0 0 0 0 0 4 + 3055 9923 3055 8655 3547 8655 3547 9923 +2 1 0 1 33 33 932 0 -1 4.000 0 0 0 0 0 5 + 3051 9927 3051 8651 3551 8651 3551 9927 3051 9927 +2 1 0 1 33 33 930 0 -1 4.000 0 0 0 0 0 5 + 3291 9927 3291 8651 3551 8651 3551 9927 3291 9927 +2 1 0 1 33 33 929 0 -1 4.000 0 0 0 0 0 5 + 3383 9927 3383 8651 3551 8651 3551 9927 3383 9927 +2 1 0 0 32 32 928 0 20 4.000 0 0 0 0 0 4 + 859 9827 859 8751 1519 8751 1519 9827 +2 1 0 1 33 33 927 0 -1 4.000 0 0 0 0 0 5 + 855 9831 855 8747 1523 8747 1523 9831 855 9831 +2 1 0 2 34 34 926 0 -1 4.000 0 0 0 0 0 3 + 1499 9803 1499 8771 883 8771 +2 1 0 1 33 33 924 0 -1 4.000 0 0 0 0 0 5 + 1095 9831 1095 8747 1523 8747 1523 9831 1095 9831 +2 1 0 1 33 33 923 0 -1 4.000 0 0 0 0 0 5 + 1187 9831 1187 8747 1523 8747 1523 9831 1187 9831 +2 1 0 0 32 32 921 0 20 4.000 0 0 0 0 0 4 + 2991 6375 2991 5547 3483 5547 3483 6375 +2 1 0 1 33 33 920 0 -1 4.000 0 0 0 0 0 5 + 2987 6379 2987 5543 3487 5543 3487 6379 2987 6379 +2 1 0 1 33 33 918 0 -1 4.000 0 0 0 0 0 5 + 3227 6379 3227 5543 3487 5543 3487 6379 3227 6379 +2 1 0 1 33 33 917 0 -1 4.000 0 0 0 0 0 5 + 3319 6379 3319 5543 3487 5543 3487 6379 3319 6379 +2 1 0 1 33 33 916 0 -1 4.000 0 0 0 0 0 2 + 3855 5959 3491 5959 +2 1 0 1 33 33 915 0 -1 4.000 0 0 0 0 0 2 + 3855 9887 3855 1111 +2 1 0 0 7 7 914 0 20 4.000 0 0 0 0 0 4 + 3491 5959 3731 5871 3731 6047 3491 5959 +2 1 0 1 33 33 913 0 -1 4.000 0 0 0 0 0 4 + 3491 5959 3731 5871 3731 6047 3491 5959 +2 1 0 1 33 33 912 0 -1 4.000 0 0 0 0 0 2 + 4551 6387 3855 6387 +2 1 0 0 7 7 911 0 20 4.000 0 0 0 0 0 4 + 4107 6959 4107 5399 4295 5399 4295 6959 +2 1 0 1 33 33 909 0 -1 4.000 0 0 0 0 0 2 + 4587 4207 3855 4207 +2 1 0 0 7 7 908 0 20 4.000 0 0 0 0 0 4 + 4391 4899 4391 3487 4579 3487 4579 4899 +2 1 0 1 33 33 906 0 -1 4.000 0 0 0 0 0 2 + 3555 2415 3855 2415 +2 1 0 0 7 7 905 0 20 4.000 0 0 0 0 0 4 + 3611 3075 3611 1647 3799 1647 3799 3075 +2 1 0 1 33 33 903 0 -1 4.000 0 0 0 0 0 2 + 4523 8235 3855 8235 +2 1 0 0 7 7 902 0 20 4.000 0 0 0 0 0 4 + 4099 8879 4099 7319 4287 7319 4287 8879 +2 1 0 1 33 33 900 0 -1 4.000 0 0 0 0 0 2 + 4587 1403 3855 1403 +2 1 0 1 33 33 899 0 -1 4.000 0 0 0 0 0 2 + 4523 9887 3855 9887 +2 1 0 0 7 7 898 0 20 4.000 0 0 0 0 0 4 + 4099 10531 4099 8971 4287 8971 4287 10531 +2 1 0 0 32 32 896 0 20 4.000 0 0 0 0 0 4 + 1747 4367 1747 2819 2679 2819 2679 4367 +2 1 0 1 33 33 895 0 -1 4.000 0 0 0 0 0 5 + 1743 4371 1743 2815 2683 2815 2683 4371 1743 4371 +2 1 0 1 33 33 893 0 -1 4.000 0 0 0 0 0 5 + 1983 4371 1983 2815 2683 2815 2683 4371 1983 4371 +2 1 0 1 33 33 892 0 -1 4.000 0 0 0 0 0 5 + 2451 4371 2451 2815 2683 2815 2683 4371 2451 4371 +2 1 0 1 33 33 889 0 -1 4.000 0 0 0 0 0 2 + 2803 4959 2551 4375 +2 1 0 0 7 7 888 0 20 4.000 0 0 0 0 0 4 + 2683 4395 2683 4303 2871 4303 2871 4395 +2 1 0 0 7 7 886 0 20 4.000 0 0 0 0 0 5 + 2551 4375 2651 4451 2635 4575 2539 4499 2551 4375 +2 1 0 1 33 33 885 0 -1 4.000 0 0 0 0 0 5 + 2551 4375 2651 4451 2635 4575 2539 4499 2551 4375 +2 1 0 1 33 33 884 0 -1 4.000 0 0 0 0 0 2 + 2803 4959 3055 5539 +2 1 0 0 7 7 883 0 20 4.000 0 0 0 0 0 4 + 3135 5419 3135 5355 3323 5355 3323 5419 +2 1 0 0 32 32 881 0 20 4.000 0 0 0 0 0 4 + 1683 9167 1683 7619 2615 7619 2615 9167 +2 1 0 1 33 33 880 0 -1 4.000 0 0 0 0 0 5 + 1679 9171 1679 7615 2619 7615 2619 9171 1679 9171 +2 1 0 1 33 33 878 0 -1 4.000 0 0 0 0 0 5 + 1919 9171 1919 7615 2619 7615 2619 9171 1919 9171 +2 1 0 1 33 33 877 0 -1 4.000 0 0 0 0 0 5 + 2387 9171 2387 7615 2619 7615 2619 9171 2387 9171 +2 1 0 1 33 33 874 0 -1 4.000 0 0 0 0 0 2 + 2771 6999 2499 7611 +2 1 0 0 7 7 873 0 20 4.000 0 0 0 0 0 4 + 2631 7675 2631 7583 2819 7583 2819 7675 +2 1 0 0 7 7 871 0 20 4.000 0 0 0 0 0 5 + 2499 7611 2487 7487 2587 7415 2599 7535 2499 7611 +2 1 0 1 33 33 870 0 -1 4.000 0 0 0 0 0 5 + 2499 7611 2487 7487 2587 7415 2599 7535 2499 7611 +2 1 0 1 33 33 869 0 -1 4.000 0 0 0 0 0 2 + 2771 6999 3047 6383 +2 1 0 0 7 7 868 0 20 4.000 0 0 0 0 0 4 + 2735 6391 2735 6327 2923 6327 2923 6391 +2 1 0 0 7 7 866 0 20 4.000 0 0 0 0 0 4 + 2735 6391 2735 6327 2923 6327 2923 6391 +2 1 0 0 32 32 864 0 20 4.000 0 0 0 0 0 4 + 623 6879 623 5043 1755 5043 1755 6879 +2 1 0 1 33 33 863 0 -1 4.000 0 0 0 0 0 5 + 619 6883 619 5039 1759 5039 1759 6883 619 6883 +2 1 0 1 33 33 861 0 -1 4.000 0 0 0 0 0 5 + 859 6883 859 5039 1759 5039 1759 6883 859 6883 +2 1 0 1 33 33 860 0 -1 4.000 0 0 0 0 0 5 + 1139 6883 1139 5039 1759 5039 1759 6883 1139 6883 +2 1 0 1 33 33 856 0 -1 4.000 0 0 0 0 0 2 + 1731 4707 1591 5035 +2 1 0 0 7 7 855 0 20 4.000 0 0 0 0 0 4 + 1715 5127 1715 5035 1903 5035 1903 5127 +2 1 0 0 7 7 853 0 20 4.000 0 0 0 0 0 5 + 1591 5035 1579 4911 1675 4835 1691 4959 1591 5035 +2 1 0 1 33 33 852 0 -1 4.000 0 0 0 0 0 5 + 1591 5035 1579 4911 1675 4835 1691 4959 1591 5035 +2 1 0 1 33 33 851 0 -1 4.000 0 0 0 0 0 2 + 1731 4707 1875 4375 +2 1 0 0 7 7 850 0 20 4.000 0 0 0 0 0 4 + 1571 4363 1571 4299 1759 4299 1759 4363 +2 1 0 0 7 7 848 0 20 4.000 0 0 0 0 0 4 + 1571 4363 1571 4299 1759 4299 1759 4363 +2 1 0 1 33 33 846 0 -1 4.000 0 0 0 0 0 2 + 1695 7251 1551 6887 +2 1 0 0 7 7 845 0 20 4.000 0 0 0 0 0 4 + 1675 6891 1675 6799 1863 6799 1863 6891 +2 1 0 0 7 7 843 0 20 4.000 0 0 0 0 0 5 + 1551 6887 1647 6963 1631 7087 1535 7011 1551 6887 +2 1 0 1 33 33 842 0 -1 4.000 0 0 0 0 0 5 + 1551 6887 1647 6963 1631 7087 1535 7011 1551 6887 +2 1 0 1 33 33 841 0 -1 4.000 0 0 0 0 0 2 + 1695 7251 1839 7611 +2 1 0 0 7 7 840 0 20 4.000 0 0 0 0 0 4 + 1931 7523 1931 7459 2119 7459 2119 7523 +2 1 0 0 7 7 838 0 20 4.000 0 0 0 0 0 4 + 1675 6891 1675 6799 1863 6799 1863 6891 +2 1 0 0 7 7 836 0 20 4.000 0 0 0 0 0 4 + 1931 7523 1931 7459 2119 7459 2119 7523 +2 1 1 1 7 7 834 0 -1 4.000 0 0 0 0 0 2 + 1191 8743 1191 6887 +2 1 1 1 0 0 833 0 -1 4.000 0 0 0 0 0 2 + 1191 8743 1191 6887 +2 1 0 1 0 0 832 0 -1 4.000 0 0 0 0 0 2 + 1191 6887 1251 7031 +2 1 0 1 0 0 831 0 -1 4.000 0 0 0 0 0 2 + 1191 6887 1131 7031 +2 1 0 0 7 7 830 0 20 4.000 0 0 0 0 0 4 + 923 8275 923 7351 1111 7351 1111 8275 +2 1 0 0 32 32 828 0 20 4.000 0 0 0 0 0 4 + 823 2295 823 1051 1555 1051 1555 2295 +2 1 0 1 33 33 827 0 -1 4.000 0 0 0 0 0 5 + 819 2299 819 1047 1559 1047 1559 2299 819 2299 +2 1 0 1 33 33 825 0 -1 4.000 0 0 0 0 0 5 + 1059 2299 1059 1047 1559 1047 1559 2299 1059 2299 +2 1 0 1 33 33 824 0 -1 4.000 0 0 0 0 0 5 + 1151 2299 1151 1047 1559 1047 1559 2299 1151 2299 +2 1 0 1 33 33 822 0 -1 4.000 0 0 0 0 0 2 + 1191 3671 1191 5035 +2 1 0 1 33 33 821 0 -1 4.000 0 0 0 0 0 2 + 1191 3671 1191 2303 +2 1 0 1 33 33 820 0 -1 4.000 0 0 0 0 0 2 + 5419 2791 3855 2791 +2 1 0 0 7 7 819 0 20 4.000 0 0 0 0 0 4 + 5143 3479 5143 2067 5331 2067 5331 3479 +2 1 0 1 33 33 817 0 -1 4.000 0 0 0 0 0 2 + 3555 3831 3855 3831 +2 1 0 0 7 7 816 0 20 4.000 0 0 0 0 0 4 + 3611 4567 3611 3139 3799 3139 3799 4567 +2 1 0 1 33 33 814 0 -1 4.000 0 0 0 0 0 2 + 3555 1111 3855 1111 +2 1 0 0 7 7 813 0 20 4.000 0 0 0 0 0 4 + 3611 1783 3611 355 3799 355 3799 1783 +2 1 0 1 33 33 811 0 -1 4.000 0 0 0 0 0 2 + 3555 9303 3855 9303 +2 1 0 0 7 7 810 0 20 4.000 0 0 0 0 0 4 + 3607 9879 3607 8507 3795 8507 3795 9879 +2 1 0 0 7 7 808 0 20 4.000 0 0 0 0 0 4 + 2683 4395 2683 4303 2871 4303 2871 4395 +2 1 0 0 7 7 806 0 20 4.000 0 0 0 0 0 4 + 2631 7675 2631 7583 2819 7583 2819 7675 +2 1 0 0 7 7 804 0 20 4.000 0 0 0 0 0 4 + 3135 5419 3135 5355 3323 5355 3323 5419 +2 1 0 0 7 7 802 0 20 4.000 0 0 0 0 0 4 + 1715 5127 1715 5035 1903 5035 1903 5127 +4 0 0 996 -1 16 10 1.5708 4 150 1080 4719 8827 ExceptionTable\001 +4 0 0 991 -1 16 10 1.5708 4 120 1230 4783 4767 LineNumberTable\001 +4 0 0 986 -1 16 10 1.5708 4 120 375 4747 6543 Code\001 +4 0 0 983 -1 16 10 1.5708 4 150 1035 4967 6951 max_stack : int\001 +4 0 0 982 -1 16 10 1.5708 4 150 1065 5155 6951 max_locals : int\001 +4 0 0 981 -1 16 10 1.5708 4 150 1365 5343 6951 exception_handlers\001 +4 0 0 980 -1 16 10 1.5708 4 150 690 5719 6951 getCode()\001 +4 0 0 974 -1 16 10 1.5708 4 105 90 4819 4947 1\001 +4 0 0 972 -1 16 10 1.5708 4 105 90 4819 4947 1\001 +4 0 0 969 -1 16 10 1.5708 4 120 1335 5615 3407 LocalVariableTable\001 +4 0 0 961 -1 16 10 1.5708 4 105 90 5835 3647 1\001 +4 0 0 959 -1 16 10 1.5708 4 105 90 5835 3647 1\001 +4 0 0 956 -1 16 10 1.5708 4 120 900 3247 4263 InnerClasses\001 +4 0 0 951 -1 16 10 1.5708 4 120 735 3247 2771 SourceFile\001 +4 0 0 946 -1 16 10 1.5708 4 150 810 4719 10227 Deprecated\001 +4 0 0 941 -1 16 10 1.5708 4 120 645 4783 1759 Unknown\001 +4 0 0 936 -1 16 10 1.5708 4 150 645 3247 1427 Synthetic\001 +4 0 0 931 -1 16 10 1.5708 4 120 1035 3247 9827 ConstantValue\001 +4 0 0 925 -1 16 10 1.5708 4 120 825 1051 9735 ClassParser\001 +4 0 0 922 -1 16 10 1.5708 4 135 480 1459 9595 parse()\001 +4 0 0 919 -1 16 10 1.5708 4 120 585 3183 6263 Attribute\001 +4 0 0 910 -1 16 10 1.5708 4 120 1500 4259 6959 <>\001 +4 0 0 907 -1 16 10 1.5708 4 120 1350 4543 4899 <>\001 +4 0 0 904 -1 16 10 1.5708 4 120 1350 3763 3075 <>\001 +4 0 0 901 -1 16 10 1.5708 4 120 1500 4251 8879 <>\001 +4 0 0 897 -1 16 10 1.5708 4 120 1500 4251 10531 <>\001 +4 0 0 894 -1 16 10 1.5708 4 120 525 1939 3863 Method\001 +4 0 0 891 -1 16 10 1.5708 4 150 1200 2159 4135 access_flags : int\001 +4 0 0 890 -1 16 10 1.5708 4 150 1185 2347 4135 signature : String\001 +4 0 0 887 -1 16 10 1.5708 4 105 90 2835 4395 1\001 +4 0 0 882 -1 16 10 1.5708 4 60 60 3287 5419 *\001 +4 0 0 879 -1 16 10 1.5708 4 120 330 1875 8571 Field\001 +4 0 0 876 -1 16 10 1.5708 4 150 1200 2095 8935 access_flags : int\001 +4 0 0 875 -1 16 10 1.5708 4 150 1185 2283 8935 signature : String\001 +4 0 0 872 -1 16 10 1.5708 4 105 90 2783 7675 1\001 +4 0 0 867 -1 16 10 1.5708 4 60 60 2887 6391 *\001 +4 0 0 865 -1 16 10 1.5708 4 60 60 2887 6391 *\001 +4 0 0 862 -1 16 10 1.5708 4 120 705 815 6339 JavaClass\001 +4 0 0 859 -1 16 10 1.5708 4 150 1200 1035 6647 access_flags : int\001 +4 0 0 858 -1 16 10 1.5708 4 150 1410 1411 6647 getInterfaceNames()\001 +4 0 0 857 -1 16 10 1.5708 4 150 1485 1599 6647 getSuperclassName()\001 +4 0 0 854 -1 16 10 1.5708 4 105 90 1867 5127 1\001 +4 0 0 849 -1 16 10 1.5708 4 60 60 1723 4363 *\001 +4 0 0 847 -1 16 10 1.5708 4 60 60 1723 4363 *\001 +4 0 0 844 -1 16 10 1.5708 4 105 90 1827 6891 1\001 +4 0 0 839 -1 16 10 1.5708 4 60 60 2083 7523 *\001 +4 0 0 837 -1 16 10 1.5708 4 105 90 1827 6891 1\001 +4 0 0 835 -1 16 10 1.5708 4 60 60 2083 7523 *\001 +4 0 0 829 -1 16 10 1.5708 4 90 870 1075 8275 <>\001 +4 0 0 826 -1 16 10 1.5708 4 120 945 1015 2167 ConstantPool\001 +4 0 0 823 -1 16 10 1.5708 4 135 945 1423 2063 getConstant()\001 +4 0 0 818 -1 16 10 1.5708 4 120 1350 5295 3479 <>\001 +4 0 0 815 -1 16 10 1.5708 4 120 1350 3763 4567 <>\001 +4 0 0 812 -1 16 10 1.5708 4 120 1350 3763 1783 <>\001 +4 0 0 809 -1 16 10 1.5708 4 120 1305 3759 9879 <>\001 +4 0 0 807 -1 16 10 1.5708 4 105 90 2835 4395 1\001 +4 0 0 805 -1 16 10 1.5708 4 105 90 2783 7675 1\001 +4 0 0 803 -1 16 10 1.5708 4 60 60 3287 5419 *\001 +4 0 0 801 -1 16 10 1.5708 4 105 90 1867 5127 1\001 +-6 diff --git a/docs/eps/il.eps b/docs/eps/il.eps new file mode 100644 index 00000000..f2ab8d92 --- /dev/null +++ b/docs/eps/il.eps @@ -0,0 +1,513 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: il.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Wed Dec 2 15:26:46 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 583 386 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-84.0 526.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 9337 m -1000 -1000 l 11587 -1000 l 11587 9337 l cp clip + 0.06299 0.06299 sc +% Polyline +7.500 slw + [60] 0 sd +gs clippath +5205 7530 m 5175 7650 l 5145 7530 l 5145 7665 l 5205 7665 l cp +clip +n 5175 6975 m 5175 7650 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5205 7530 m 5175 7650 l 5145 7530 l col0 s +% Polyline + [60] 0 sd +gs clippath +5595 7095 m 5625 6975 l 5655 7095 l 5655 6960 l 5595 6960 l cp +clip +n 5625 7650 m 5625 6975 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5595 7095 m 5625 6975 l 5655 7095 l col0 s +% Polyline + [60] 0 sd +gs clippath +5205 3930 m 5175 4050 l 5145 3930 l 5145 4065 l 5205 4065 l cp +clip +n 5175 3375 m 5175 4050 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5205 3930 m 5175 4050 l 5145 3930 l col0 s +% Polyline + [60] 0 sd +gs clippath +5595 3495 m 5625 3375 l 5655 3495 l 5655 3360 l 5595 3360 l cp +clip +n 5625 4050 m 5625 3375 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5595 3495 m 5625 3375 l 5655 3495 l col0 s +% Polyline +n 4380 6750 m 4275 6750 4275 6870 105 arcto 4 {pop} repeat + 4275 6975 6420 6975 105 arcto 4 {pop} repeat + 6525 6975 6525 6855 105 arcto 4 {pop} repeat + 6525 6750 4380 6750 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 6930 m +gs 1 -1 sc (goto) col0 sh gr +% Polyline +n 4380 6300 m 4275 6300 4275 6420 105 arcto 4 {pop} repeat + 4275 6525 6420 6525 105 arcto 4 {pop} repeat + 6525 6525 6525 6405 105 arcto 4 {pop} repeat + 6525 6300 4380 6300 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 6480 m +gs 1 -1 sc (invokevirtual) col0 sh gr +% Polyline +n 4380 5850 m 4275 5850 4275 5970 105 arcto 4 {pop} repeat + 4275 6075 6420 6075 105 arcto 4 {pop} repeat + 6525 6075 6525 5955 105 arcto 4 {pop} repeat + 6525 5850 4380 5850 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 6030 m +gs 1 -1 sc (aload) col0 sh gr +% Polyline +n 4380 5400 m 4275 5400 4275 5520 105 arcto 4 {pop} repeat + 4275 5625 6420 5625 105 arcto 4 {pop} repeat + 6525 5625 6525 5505 105 arcto 4 {pop} repeat + 6525 5400 4380 5400 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 5580 m +gs 1 -1 sc (getstatic) col0 sh gr +% Polyline +n 4380 4950 m 4275 4950 4275 5070 105 arcto 4 {pop} repeat + 4275 5175 6420 5175 105 arcto 4 {pop} repeat + 6525 5175 6525 5055 105 arcto 4 {pop} repeat + 6525 4950 4380 4950 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 5130 m +gs 1 -1 sc (astore) col0 sh gr +% Polyline +n 4380 4500 m 4275 4500 4275 4620 105 arcto 4 {pop} repeat + 4275 4725 6420 4725 105 arcto 4 {pop} repeat + 6525 4725 6525 4605 105 arcto 4 {pop} repeat + 6525 4500 4380 4500 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 4680 m +gs 1 -1 sc (goto) col0 sh gr +% Polyline +n 4380 4050 m 4275 4050 4275 4170 105 arcto 4 {pop} repeat + 4275 4275 6420 4275 105 arcto 4 {pop} repeat + 6525 4275 6525 4155 105 arcto 4 {pop} repeat + 6525 4050 4380 4050 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 4230 m +gs 1 -1 sc (istore) col0 sh gr +% Polyline +gs clippath +5595 4395 m 5625 4275 l 5655 4395 l 5655 4260 l 5595 4260 l cp +clip +n 5625 4500 m 5625 4275 l gs col0 s gr gr + +% arrowhead +n 5595 4395 m 5625 4275 l 5655 4395 l col0 s +% Polyline +gs clippath +5205 4380 m 5175 4500 l 5145 4380 l 5145 4515 l 5205 4515 l cp +clip +n 5175 4275 m 5175 4500 l gs col0 s gr gr + +% arrowhead +n 5205 4380 m 5175 4500 l 5145 4380 l col0 s +% Polyline +gs clippath +5595 4845 m 5625 4725 l 5655 4845 l 5655 4710 l 5595 4710 l cp +clip +n 5625 4950 m 5625 4725 l gs col0 s gr gr + +% arrowhead +n 5595 4845 m 5625 4725 l 5655 4845 l col0 s +% Polyline +gs clippath +5205 4830 m 5175 4950 l 5145 4830 l 5145 4965 l 5205 4965 l cp +clip +n 5175 4725 m 5175 4950 l gs col0 s gr gr + +% arrowhead +n 5205 4830 m 5175 4950 l 5145 4830 l col0 s +% Polyline +gs clippath +5595 5295 m 5625 5175 l 5655 5295 l 5655 5160 l 5595 5160 l cp +clip +n 5625 5400 m 5625 5175 l gs col0 s gr gr + +% arrowhead +n 5595 5295 m 5625 5175 l 5655 5295 l col0 s +% Polyline +gs clippath +5205 5280 m 5175 5400 l 5145 5280 l 5145 5415 l 5205 5415 l cp +clip +n 5175 5175 m 5175 5400 l gs col0 s gr gr + +% arrowhead +n 5205 5280 m 5175 5400 l 5145 5280 l col0 s +% Polyline +gs clippath +5595 5745 m 5625 5625 l 5655 5745 l 5655 5610 l 5595 5610 l cp +clip +n 5625 5850 m 5625 5625 l gs col0 s gr gr + +% arrowhead +n 5595 5745 m 5625 5625 l 5655 5745 l col0 s +% Polyline +gs clippath +5205 5730 m 5175 5850 l 5145 5730 l 5145 5865 l 5205 5865 l cp +clip +n 5175 5625 m 5175 5850 l gs col0 s gr gr + +% arrowhead +n 5205 5730 m 5175 5850 l 5145 5730 l col0 s +% Polyline +gs clippath +5595 6195 m 5625 6075 l 5655 6195 l 5655 6060 l 5595 6060 l cp +clip +n 5625 6300 m 5625 6075 l gs col0 s gr gr + +% arrowhead +n 5595 6195 m 5625 6075 l 5655 6195 l col0 s +% Polyline +gs clippath +5205 6180 m 5175 6300 l 5145 6180 l 5145 6315 l 5205 6315 l cp +clip +n 5175 6075 m 5175 6300 l gs col0 s gr gr + +% arrowhead +n 5205 6180 m 5175 6300 l 5145 6180 l col0 s +% Polyline +gs clippath +5595 6645 m 5625 6525 l 5655 6645 l 5655 6510 l 5595 6510 l cp +clip +n 5625 6750 m 5625 6525 l gs col0 s gr gr + +% arrowhead +n 5595 6645 m 5625 6525 l 5655 6645 l col0 s +% Polyline +gs clippath +5205 6630 m 5175 6750 l 5145 6630 l 5145 6765 l 5205 6765 l cp +clip +n 5175 6525 m 5175 6750 l gs col0 s gr gr + +% arrowhead +n 5205 6630 m 5175 6750 l 5145 6630 l col0 s +% Polyline +n 4380 7650 m 4275 7650 4275 7770 105 arcto 4 {pop} repeat + 4275 7875 6420 7875 105 arcto 4 {pop} repeat + 6525 7875 6525 7755 105 arcto 4 {pop} repeat + 6525 7650 4380 7650 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 7830 m +gs 1 -1 sc (iload) col0 sh gr +% Polyline +n 4380 8100 m 4275 8100 4275 8220 105 arcto 4 {pop} repeat + 4275 8325 6420 8325 105 arcto 4 {pop} repeat + 6525 8325 6525 8205 105 arcto 4 {pop} repeat + 6525 8100 4380 8100 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 8280 m +gs 1 -1 sc (ireturn) col0 sh gr +% Polyline +gs clippath +5595 7995 m 5625 7875 l 5655 7995 l 5655 7860 l 5595 7860 l cp +clip +n 5625 8100 m 5625 7875 l gs col0 s gr gr + +% arrowhead +n 5595 7995 m 5625 7875 l 5655 7995 l col0 s +% Polyline +gs clippath +5205 7980 m 5175 8100 l 5145 7980 l 5145 8115 l 5205 8115 l cp +clip +n 5175 7875 m 5175 8100 l gs col0 s gr gr + +% arrowhead +n 5205 7980 m 5175 8100 l 5145 7980 l col0 s +% Polyline +gs clippath +5595 2595 m 5625 2475 l 5655 2595 l 5655 2460 l 5595 2460 l cp +clip +n 5625 2700 m 5625 2475 l gs col0 s gr gr + +% arrowhead +n 5595 2595 m 5625 2475 l 5655 2595 l col0 s +% Polyline +gs clippath +5205 2580 m 5175 2700 l 5145 2580 l 5145 2715 l 5205 2715 l cp +clip +n 5175 2475 m 5175 2700 l gs col0 s gr gr + +% arrowhead +n 5205 2580 m 5175 2700 l 5145 2580 l col0 s +% Polyline +n 4380 3150 m 4275 3150 4275 3270 105 arcto 4 {pop} repeat + 4275 3375 6420 3375 105 arcto 4 {pop} repeat + 6525 3375 6525 3255 105 arcto 4 {pop} repeat + 6525 3150 4380 3150 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 3330 m +gs 1 -1 sc (getstatic) col0 sh gr +% Polyline +n 4380 2700 m 4275 2700 4275 2820 105 arcto 4 {pop} repeat + 4275 2925 6420 2925 105 arcto 4 {pop} repeat + 6525 2925 6525 2805 105 arcto 4 {pop} repeat + 6525 2700 4380 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 2880 m +gs 1 -1 sc (istore) col0 sh gr +% Polyline +n 4380 2250 m 4275 2250 4275 2370 105 arcto 4 {pop} repeat + 4275 2475 6420 2475 105 arcto 4 {pop} repeat + 6525 2475 6525 2355 105 arcto 4 {pop} repeat + 6525 2250 4380 2250 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 2430 m +gs 1 -1 sc (sipush) col0 sh gr +% Polyline +gs clippath +5595 3045 m 5625 2925 l 5655 3045 l 5655 2910 l 5595 2910 l cp +clip +n 5625 3150 m 5625 2925 l gs col0 s gr gr + +% arrowhead +n 5595 3045 m 5625 2925 l 5655 3045 l col0 s +% Polyline +gs clippath +5205 3030 m 5175 3150 l 5145 3030 l 5145 3165 l 5205 3165 l cp +clip +n 5175 2925 m 5175 3150 l gs col0 s gr gr + +% arrowhead +n 5205 3030 m 5175 3150 l 5145 3030 l col0 s +% Polyline +n 1350 5175 m 3600 5175 l 3600 5625 l 1350 5625 l cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +1575 5400 m +gs 1 -1 sc (IOException e1) col0 sh gr +% Polyline +n 1575 5175 m 1575 4950 l 3825 4950 l 3825 5400 l 3600 5400 l 3600 5175 l + 1575 5175 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 1350 3600 m 3600 3600 l 3600 4050 l 1350 4050 l cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +1575 3825 m +gs 1 -1 sc (int n) col0 sh gr +% Polyline +n 1575 3600 m 1575 3375 l 3825 3375 l 3825 3825 l 3600 3825 l 3600 3600 l + 1575 3600 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 7200 4050 m 10350 4050 l 10350 4500 l 7200 4500 l cp gs col0 s gr +% Polyline +n 7425 4050 m 7425 3825 l 10575 3825 l 10575 4275 l 10350 4275 l 10350 4050 l + 8325 4050 l gs 0.00 setgray ef gr gs col0 s gr +/Courier-Bold ff 210.00 scf sf +7425 4275 m +gs 1 -1 sc (Exception handler 1) col0 sh gr +% Polyline +gs clippath +4152 5071 m 4275 5085 l 4160 5131 l 4294 5113 l 4286 5053 l cp +clip +n 3600 5175 m 4275 5085 l gs col0 s gr gr + +% arrowhead +n 4152 5071 m 4275 5085 l 4160 5131 l 4156 5101 l 4152 5071 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4190 2475 m 4275 2385 l 4243 2504 l 4309 2386 l 4256 2357 l cp +clip +n 3600 3600 m 4275 2385 l gs col0 s gr gr + +% arrowhead +n 4190 2475 m 4275 2385 l 4243 2504 l 4217 2490 l 4190 2475 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4221 6324 m 4275 6435 l 4175 6362 l 4262 6466 l 4308 6427 l cp +clip +n 3600 5625 m 4275 6435 l gs col0 s gr gr + +% arrowhead +n 4221 6324 m 4275 6435 l 4175 6362 l 4198 6343 l 4221 6324 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6635 5029 m 6525 5085 l 6596 4984 l 6494 5072 l 6533 5117 l cp +clip +n 7200 4500 m 6525 5085 l gs col0 s gr gr + +% arrowhead +n 6635 5029 m 6525 5085 l 6596 4984 l 6616 5006 l 6635 5029 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6645 4215 m 6525 4185 l 6645 4155 l 6510 4155 l 6510 4215 l cp +clip +n 7200 4185 m 6525 4185 l gs col0 s gr gr + +% arrowhead +n 6645 4215 m 6525 4185 l 6645 4155 l 6645 4185 l 6645 4215 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6582 3395 m 6525 3285 l 6627 3355 l 6538 3254 l 6493 3294 l cp +clip +n 7200 4050 m 6525 3285 l gs col0 s gr gr + +% arrowhead +n 6582 3395 m 6525 3285 l 6627 3355 l 6604 3375 l 6582 3395 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4329 7977 m 4320 8100 l 4269 7987 l 4293 8120 l 4352 8110 l cp +clip +n 3600 4050 m 4320 8100 l gs col0 s gr gr + +% arrowhead +n 4329 7977 m 4320 8100 l 4269 7987 l 4299 7982 l 4329 7977 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6649 7784 m 6525 7785 l 6633 7726 l 6503 7760 l 6518 7818 l cp +clip +n 6525 4635 m 6527 4636 l 6532 4640 l 6542 4646 l 6556 4655 l 6575 4667 l + 6600 4683 l 6628 4702 l 6661 4723 l 6695 4746 l 6731 4771 l + 6768 4796 l 6804 4821 l 6838 4845 l 6871 4869 l 6902 4892 l + 6931 4915 l 6958 4936 l 6983 4957 l 7005 4977 l 7026 4996 l + 7045 5015 l 7063 5034 l 7080 5054 l 7095 5073 l 7110 5093 l + 7124 5113 l 7137 5133 l 7150 5154 l 7162 5176 l 7174 5199 l + 7185 5223 l 7196 5247 l 7207 5273 l 7216 5299 l 7226 5326 l + 7235 5353 l 7243 5381 l 7251 5409 l 7258 5438 l 7265 5467 l + 7271 5496 l 7276 5525 l 7281 5554 l 7286 5582 l 7290 5611 l + 7293 5639 l 7296 5667 l 7299 5694 l 7301 5721 l 7303 5748 l + 7305 5775 l 7306 5802 l 7308 5829 l 7309 5857 l 7310 5885 l + 7310 5914 l 7311 5944 l 7311 5974 l 7311 6004 l 7311 6035 l + 7310 6067 l 7310 6099 l 7309 6131 l 7308 6163 l 7307 6195 l + 7306 6227 l 7305 6258 l 7304 6289 l 7302 6320 l 7301 6350 l + 7299 6379 l 7298 6407 l 7296 6435 l 7295 6462 l 7293 6489 l + 7292 6514 l 7290 6540 l 7288 6567 l 7287 6595 l 7285 6622 l + 7283 6650 l 7281 6677 l 7279 6706 l 7277 6734 l 7275 6762 l + 7273 6791 l 7270 6820 l 7268 6848 l 7265 6877 l 7263 6905 l + 7260 6932 l 7257 6959 l 7255 6986 l 7252 7011 l 7249 7036 l + 7246 7060 l 7243 7084 l 7240 7106 l 7237 7128 l 7233 7149 l + 7230 7170 l 7226 7195 l 7221 7219 l 7216 7243 l 7211 7268 l + 7205 7292 l 7198 7317 l 7191 7342 l 7183 7366 l 7174 7390 l + 7165 7414 l 7155 7436 l 7144 7459 l 7133 7480 l 7121 7500 l + 7108 7519 l 7095 7537 l 7081 7553 l 7066 7569 l 7051 7584 l + 7035 7598 l 7020 7609 l 7003 7621 l 6985 7632 l 6966 7642 l + 6945 7653 l 6921 7663 l 6895 7674 l 6867 7684 l 6836 7695 l + 6803 7706 l 6767 7717 l 6730 7728 l 6693 7739 l 6656 7750 l + 6622 7759 l 6592 7767 l 6567 7774 l 6525 7785 l gs col0 s gr gr + +% arrowhead +n 6649 7784 m 6525 7785 l 6633 7726 l 6641 7755 l 6649 7784 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6619 7615 m 6525 7695 l 6570 7580 l 6492 7690 l 6541 7725 l cp +clip +n 6525 6840 m 6526 6843 l 6529 6850 l 6533 6863 l 6540 6882 l 6549 6908 l + 6560 6938 l 6572 6973 l 6585 7010 l 6598 7048 l 6610 7086 l + 6622 7122 l 6632 7157 l 6642 7189 l 6650 7219 l 6657 7246 l + 6663 7271 l 6667 7294 l 6671 7315 l 6673 7335 l 6675 7354 l + 6675 7373 l 6674 7394 l 6672 7415 l 6669 7435 l 6663 7455 l + 6656 7476 l 6648 7498 l 6637 7520 l 6624 7544 l 6610 7568 l + 6595 7593 l 6579 7617 l 6564 7640 l 6550 7660 l 6525 7695 l gs col0 s gr gr + +% arrowhead +n 6619 7615 m 6525 7695 l 6570 7580 l 6595 7597 l 6619 7615 l cp gs 0.00 setgray ef gr col0 s +$F2psEnd +rs diff --git a/docs/eps/il.fig b/docs/eps/il.fig new file mode 100644 index 00000000..706e51ce --- /dev/null +++ b/docs/eps/il.fig @@ -0,0 +1,225 @@ +#FIG 3.2 +Portrait +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 4275 2250 6525 8325 +6 5130 6975 5670 7650 +6 5130 6975 5220 7650 +2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 6975 5175 7650 +-6 +2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 7650 5625 6975 +-6 +6 5130 3375 5670 4050 +2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 3375 5175 4050 +2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 4050 5625 3375 +-6 +6 4275 4050 6525 6975 +6 4275 6750 6525 6975 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 6975 6525 6750 4275 6750 4275 6975 6525 6975 +4 0 0 100 0 14 14 0.0000 4 195 540 4500 6930 goto\001 +-6 +6 4275 6300 6525 6525 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 6525 6525 6300 4275 6300 4275 6525 6525 6525 +4 0 0 100 0 14 14 0.0000 4 150 1755 4455 6480 invokevirtual\001 +-6 +6 4275 5850 6525 6075 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 6075 6525 5850 4275 5850 4275 6075 6525 6075 +4 0 0 100 0 14 14 0.0000 4 150 675 4500 6030 aload\001 +-6 +6 4275 5400 6525 5625 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 5625 6525 5400 4275 5400 4275 5625 6525 5625 +4 0 0 100 0 14 14 0.0000 4 195 1215 4500 5580 getstatic\001 +-6 +6 4275 4950 6525 5175 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 5175 6525 4950 4275 4950 4275 5175 6525 5175 +4 0 0 100 0 14 14 0.0000 4 150 810 4500 5130 astore\001 +-6 +6 4275 4500 6525 4725 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 4725 6525 4500 4275 4500 4275 4725 6525 4725 +4 0 0 100 0 14 14 0.0000 4 195 540 4500 4680 goto\001 +-6 +6 4275 4050 6525 4275 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 4275 6525 4050 4275 4050 4275 4275 6525 4275 +4 0 0 100 0 14 14 0.0000 4 150 810 4455 4230 istore\001 +-6 +6 4950 4275 5850 4500 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 4500 5625 4275 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 4275 5175 4500 +-6 +6 4950 4725 5850 4950 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 4950 5625 4725 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 4725 5175 4950 +-6 +6 4950 5175 5850 5400 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 5400 5625 5175 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 5175 5175 5400 +-6 +6 4950 5625 5850 5850 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 5850 5625 5625 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 5625 5175 5850 +-6 +6 4950 6075 5850 6300 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 6300 5625 6075 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 6075 5175 6300 +-6 +6 4950 6525 5850 6750 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 6750 5625 6525 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 6525 5175 6750 +-6 +-6 +6 4275 7650 6525 8325 +6 4275 7650 6525 7875 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 7875 6525 7650 4275 7650 4275 7875 6525 7875 +4 0 0 100 0 14 14 0.0000 4 150 675 4455 7830 iload\001 +-6 +6 4275 8100 6525 8325 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 8325 6525 8100 4275 8100 4275 8325 6525 8325 +4 0 0 100 0 14 14 0.0000 4 150 945 4455 8280 ireturn\001 +-6 +6 4950 7875 5850 8100 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 8100 5625 7875 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 7875 5175 8100 +-6 +-6 +6 4275 2250 6525 3375 +6 4950 2475 5850 2700 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 2700 5625 2475 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 2475 5175 2700 +-6 +6 4275 3150 6525 3375 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 3375 6525 3150 4275 3150 4275 3375 6525 3375 +4 0 0 100 0 14 14 0.0000 4 195 1215 4500 3330 getstatic\001 +-6 +6 4275 2700 6525 2925 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 2925 6525 2700 4275 2700 4275 2925 6525 2925 +4 0 0 100 0 14 14 0.0000 4 150 810 4455 2880 istore\001 +-6 +6 4275 2250 6525 2475 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 6525 2475 6525 2250 4275 2250 4275 2475 6525 2475 +4 0 0 100 0 14 14 0.0000 4 195 810 4500 2430 sipush\001 +-6 +6 4950 2925 5850 3150 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5625 3150 5625 2925 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5175 2925 5175 3150 +-6 +-6 +-6 +6 1350 4950 3825 5625 +6 1350 5175 3600 5625 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 1350 5175 3600 5175 3600 5625 1350 5625 1350 5175 +4 0 0 100 0 14 14 0.0000 4 195 1890 1575 5400 IOException e1\001 +-6 +2 1 0 1 0 0 100 0 20 0.000 0 0 -1 0 0 7 + 1575 5175 1575 4950 3825 4950 3825 5400 3600 5400 3600 5175 + 1575 5175 +-6 +6 1350 3375 3825 4050 +6 1350 3600 3600 4050 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 1350 3600 3600 3600 3600 4050 1350 4050 1350 3600 +4 0 0 100 0 14 14 0.0000 4 150 675 1575 3825 int n\001 +-6 +2 1 0 1 0 0 100 0 20 0.000 0 0 -1 0 0 7 + 1575 3600 1575 3375 3825 3375 3825 3825 3600 3825 3600 3600 + 1575 3600 +-6 +6 7200 3825 10575 4500 +2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 + 7200 4050 10350 4050 10350 4500 7200 4500 7200 4050 +2 1 0 1 0 0 100 0 20 0.000 0 0 -1 0 0 7 + 7425 4050 7425 3825 10575 3825 10575 4275 10350 4275 10350 4050 + 8325 4050 +4 0 0 100 0 14 14 0.0000 4 195 2565 7425 4275 Exception handler 1\001 +-6 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 3600 5175 4275 5085 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 3600 3600 4275 2385 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 3600 5625 4275 6435 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 4500 6525 5085 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 4185 6525 4185 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 7200 4050 6525 3285 +2 1 0 1 0 7 100 0 -1 0.000 0 0 7 1 0 2 + 1 1 1.00 60.00 120.00 + 3600 4050 4320 8100 +3 0 0 1 0 7 100 0 -1 0.000 0 1 0 7 + 1 1 1.00 60.00 120.00 + 6525 4635 7200 5040 7335 5760 7290 6570 7245 7200 7110 7650 + 6525 7785 + 0.000 1.000 1.000 1.000 1.000 1.000 0.000 +3 0 0 1 0 7 100 0 -1 0.000 0 1 0 3 + 1 1 1.00 60.00 120.00 + 6525 6840 6750 7425 6525 7695 + 0.000 1.000 0.000 diff --git a/docs/eps/instructions.eps b/docs/eps/instructions.eps new file mode 100644 index 00000000..2ed46dc5 --- /dev/null +++ b/docs/eps/instructions.eps @@ -0,0 +1,445 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:43:39 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 410 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1409.418 -167.686 translate +90 rotate +1.711 1.711 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 1432 65 209 154 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 1641 64 M 1431 64 I 1431 219 I 1641 219 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S21 F0 [33.09 0 0 -33.09 0 0 ] mFS +F0S21 Ji +1461 104 M (Instruction)[9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1641 117 M 1431 117 I 1431 219 I 1641 219 I C +K +N 1641 212 M 1431 212 I 1431 219 I 1641 219 I C +K +0 0 0 1 scol 1478 153 M (tag)[9 17 0]xS +1478 191 M (length)[7 17 18 18 9 0]xS +: N 575 326 321 98 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 896 325 M 574 325 I 574 424 I 896 424 I C +K +0 0 0 1 scol 609 365 M (BranchInstruction)[22 11 17 18 17 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 896 378 M 574 378 I 574 424 I 896 424 I C +K +N 896 396 M 574 396 I 574 424 I 896 424 I C +K +: N 822 556 164 154 rp C +1 1 0.801 1 scol L ; N 986 555 M 821 555 I 821 710 I 986 710 I C +K +0 0 0 1 scol 859 595 M (Select)[22 17 7 17 17 0]xS +0.602 0 0.199 1 scol N 986 608 M 821 608 I 821 710 I 986 710 I C +K +N 986 702 M 821 702 I 821 710 I 986 710 I C +K +0 0 0 1 scol 868 644 M (targets)[9 17 11 18 17 9 0]xS +868 682 M (keys)[16 17 15 0]xS +: N 584 815 303 100 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 887 814 M 583 814 I 583 915 I 887 915 I C +K +0 0 0 1 scol 599 855 M (LOOKUPSWITCH)[18 26 26 22 24 22 22 34 9 21 24 0]xS +0.602 0 0.199 1 scol N 887 868 M 583 868 I 583 915 I 887 915 I C +K +N 887 886 M 583 886 I 583 915 I 887 915 I C +K +: N 964 815 267 100 rp C +1 1 0.801 1 scol L ; N 1231 814 M 963 814 I 963 915 I 1231 915 I C +K +0 0 0 1 scol 978 855 M (TABLESWITCH)[21 22 22 18 22 22 34 9 21 24 0]xS +0.602 0 0.199 1 scol N 1231 868 M 963 868 I 963 915 I 1231 915 I C +K +N 1231 886 M 963 886 I 963 915 I 1231 915 I C +K +: N 567 557 208 100 rp C +1 1 0.801 1 scol L ; N 775 556 M 566 556 I 566 657 I 775 657 I C +K +0 0 0 1 scol 587 597 M (IfInstruction)[9 10 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 775 609 M 566 609 I 566 657 I 775 657 I C +K +N 775 628 M 566 628 I 566 657 I 775 657 I C +K +: N 393 557 143 100 rp C +1 1 0.801 1 scol L ; N 536 556 M 392 556 I 392 657 I 536 657 I C +K +0 0 0 1 scol 415 597 M (GOTO)[26 26 21 0]xS +0.602 0 0.199 1 scol N 536 609 M 392 609 I 392 657 I 536 657 I C +K +N 536 628 M 392 628 I 392 657 I 536 657 I C +K +N 730 499 M 730 425 I K +N 469 499 M 910 499 I K +N 730 425 M 748 473 I 712 473 I C +: 1 1 1 1 scol O ; K +N 469 556 M 469 499 I K +: N 1843 118 290 100 rp C +1 1 0.801 1 scol L ; N 2133 117 M 1842 117 I 1842 218 I 2133 218 I C +K +0 0 0 1 scol 1865 158 M (ReturnInstruction)[24 17 9 18 11 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2133 168 M 1842 168 I 1842 218 I 2133 218 I C +K +N 2133 186 M 1842 186 I 1842 218 I 2133 218 I C +K +: N 1004 325 264 99 rp C +1 1 0.801 1 scol L ; N 1268 324 M 1003 324 I 1003 424 I 1268 424 I C +K +0 0 0 1 scol 1023 364 M (ArrayInstruction)[22 11 11 17 15 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1268 377 M 1003 377 I 1003 424 I 1268 424 I C +K +N 1268 396 M 1003 396 I 1003 424 I 1268 424 I C +K +: N 1704 332 232 188 rp C +1 1 0.801 1 scol L ; N 1936 331 M 1703 331 I 1703 520 I 1936 520 I C +K +0 0 0 1 scol 1722 372 M (CPInstruction)[24 22 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1936 382 M 1703 382 I 1703 520 I 1936 520 I C +K +N 1936 438 M 1703 438 I 1703 520 I 1936 520 I C +K +0 0 0 1 scol 1751 418 M (index)[7 18 18 17 0]xS +1751 494 M (getType\(\))[18 17 9 21 15 18 17 11 0]xS +: N 1038 118 274 100 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1312 117 M 1037 117 I 1037 218 I 1312 218 I C +K +0 0 0 1 scol 1059 158 M (StackInstruction)[22 9 17 17 16 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1312 170 M 1037 170 I 1037 218 I 1312 218 I C +K +N 1312 189 M 1037 189 I 1037 218 I 1312 218 I C +K +: N 1312 325 345 99 rp C +1 1 0.801 1 scol L ; N 1657 324 M 1311 324 I 1311 424 I 1657 424 I C +K +0 0 0 1 scol 1329 364 M (ConversionInstruction)[24 17 18 15 17 11 17 7 17 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1657 377 M 1311 377 I 1311 424 I 1657 424 I C +K +N 1657 396 M 1311 396 I 1311 424 I 1657 424 I C +K +N 675 556 M 675 499 I K +: N 619 118 337 100 rp C +1 1 0.801 1 scol L ; N 956 117 M 618 117 I 618 218 I 956 218 I C +K +0 0 0 1 scol 641 158 M (ArithmeticInstruction)[22 11 7 9 18 27 17 9 7 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 956 170 M 618 170 I 618 218 I 956 218 I C +K +N 956 189 M 618 189 I 618 218 I 956 218 I C +K +: N 1974 326 390 148 rp C +1 1 0.801 1 scol L ; N 2364 325 M 1973 325 I 1973 474 I 2364 474 I C +K +0 0 0 1 scol 1998 366 M (LocalVariableInstruction)[18 17 17 17 7 22 17 11 7 17 18 7 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2364 376 M 1973 376 I 1973 474 I 2364 474 I C +K +N 2364 433 M 1973 433 I 1973 474 I 2364 474 I C +K +0 0 0 1 scol 2020 412 M (index)[7 18 18 17 0]xS +: N 1392 869 263 148 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1655 868 M 1391 868 I 1391 1017 I 1655 1017 I C +K +0 0 0 1 scol 1414 908 M (FieldInstruction)[20 7 17 7 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1655 921 M 1391 921 I 1391 1017 I 1655 1017 I C +K +N 1655 940 M 1391 940 I 1391 1017 I 1655 1017 I C +K +0 0 0 1 scol 1439 995 M (getFieldType\(\))[18 17 9 20 7 17 7 18 21 15 18 17 11 0]xS +: N 1735 869 351 148 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2086 868 M 1734 868 I 1734 1017 I 2086 1017 I C +K +0 0 0 1 scol 1790 908 M (InvokeInstruction)[9 18 15 17 16 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2086 919 M 1734 919 I 1734 1017 I 2086 1017 I C +K +N 2086 937 M 1734 937 I 1734 1017 I 2086 1017 I C +K +0 0 0 1 scol 1781 992 M (getArgumentTypes\(\))[18 17 9 22 11 18 18 27 17 18 9 21 15 18 17 17 11 0]xS +0.602 0 0.199 1 scol N 1539 293 M 1539 220 I K +N 703 293 M 2171 293 I K +N 1539 220 M 1557 269 I 1522 269 I C +: 1 1 1 1 scol O ; K +N 2171 325 M 2171 293 I K +N 1826 331 M 1826 293 I K +N 898 784 M 898 711 I K +N 737 784 M 1069 784 I K +N 898 711 M 916 760 I 880 760 I C +: 1 1 1 1 scol O ; K +N 737 814 M 737 784 I K +N 1116 324 M 1116 293 I K +N 792 219 M 792 293 I K +N 1487 324 M 1487 293 I K +N 1984 219 M 1984 293 I K +N 1166 219 M 1166 293 I K +: N 1554 623 248 148 rp C +1 1 0.801 1 scol L ; N 1802 622 M 1553 622 I 1553 771 I 1802 771 I C +K +0 0 0 1 scol 1572 663 M (FieldOrMethod)[20 7 17 7 18 26 11 27 17 9 18 17 0]xS +0.602 0 0.199 1 scol N 1802 676 M 1553 676 I 1553 771 I 1802 771 I C +K +N 1802 694 M 1553 694 I 1553 771 I 1802 771 I C +K +0 0 0 1 scol 1601 749 M (getName\(\))[18 17 9 24 17 27 17 11 0]xS +: N 2179 635 186 99 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2365 634 M 2178 634 I 2178 734 I 2365 734 I C +K +0 0 0 1 scol 2232 674 M (NEW)[24 22 0]xS +0.602 0 0.199 1 scol N 2365 684 M 2178 684 I 2178 734 I 2365 734 I C +K +N 2365 703 M 2178 703 I 2178 734 I 2365 734 I C +K +N 703 325 M 703 293 I K +N 1820 594 M 1820 521 I K +N 1657 594 M 2249 594 I K +N 1820 521 M 1838 570 I 1802 570 I C +: 1 1 1 1 scol O ; K +: N 1889 635 250 99 rp C +1 1 0.801 1 scol L ; N 2139 634 M 1888 634 I 1888 734 I 2139 734 I C +K +0 0 0 1 scol 1907 674 M (INSTANCEOF)[9 24 22 21 22 24 24 22 26 0]xS +0.602 0 0.199 1 scol N 2139 684 M 1888 684 I 1888 734 I 2139 734 I C +K +N 2139 703 M 1888 703 I 1888 734 I 2139 734 I C +K +N 2014 634 M 2014 594 I K +N 2249 634 M 2249 594 I K +N 1657 622 M 1657 594 I K +N 1069 814 M 1069 784 I K +N 1677 845 M 1677 772 I K +N 1511 845 M 1907 845 I K +N 1677 772 M 1695 821 I 1660 821 I C +: 1 1 1 1 scol O ; K +N 1907 868 M 1907 845 I K +N 1511 868 M 1511 845 I K +N 910 555 M 910 499 I K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore diff --git a/docs/eps/instructions.fig b/docs/eps/instructions.fig new file mode 100644 index 00000000..5c88fb55 --- /dev/null +++ b/docs/eps/instructions.fig @@ -0,0 +1,245 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +0 32 #f9f9f9 +0 33 #303030 +6 75 75 5475 9975 +2 1 0 0 32 32 998 0 20 4.000 0 0 0 0 0 4 + 95 5002 95 3478 1027 3478 1027 5002 +2 1 0 1 33 33 997 0 -1 4.000 0 0 0 0 0 5 + 91 5006 91 3474 1031 3474 1031 5006 91 5006 +2 1 0 1 33 33 995 0 -1 4.000 0 0 0 0 0 5 + 355 5006 355 3474 1031 3474 1031 5006 355 5006 +2 1 0 1 33 33 994 0 -1 4.000 0 0 0 0 0 5 + 823 5006 823 3474 1031 3474 1031 5006 823 5006 +2 1 0 0 32 32 991 0 20 4.000 0 0 0 0 0 4 + 1667 9186 1667 7102 2399 7102 2399 9186 +2 1 0 1 33 33 990 0 -1 4.000 0 0 0 0 0 5 + 1663 9190 1663 7098 2403 7098 2403 9190 1663 9190 +2 1 0 1 33 33 988 0 -1 4.000 0 0 0 0 0 5 + 1927 9190 1927 7098 2403 7098 2403 9190 1927 9190 +2 1 0 1 33 33 987 0 -1 4.000 0 0 0 0 0 5 + 2207 9190 2207 7098 2403 7098 2403 9190 2207 9190 +2 1 0 0 32 32 985 0 20 4.000 0 0 0 0 0 4 + 3295 7806 3295 5538 4227 5538 4227 7806 +2 1 0 1 33 33 984 0 -1 4.000 0 0 0 0 0 5 + 3291 7810 3291 5534 4231 5534 4231 7810 3291 7810 +2 1 0 1 33 33 982 0 -1 4.000 0 0 0 0 0 5 + 3555 7810 3555 5534 4231 5534 4231 7810 3555 7810 +2 1 0 1 33 33 981 0 -1 4.000 0 0 0 0 0 5 + 4023 7810 4023 5534 4231 5534 4231 7810 4023 7810 +2 1 0 0 32 32 978 0 20 4.000 0 0 0 0 0 4 + 4923 8254 4923 6754 5415 6754 5415 8254 +2 1 0 1 33 33 977 0 -1 4.000 0 0 0 0 0 5 + 4919 8258 4919 6750 5419 6750 5419 8258 4919 8258 +2 1 0 1 33 33 975 0 -1 4.000 0 0 0 0 0 5 + 5183 8258 5183 6750 5419 6750 5419 8258 5183 8258 +2 1 0 1 33 33 974 0 -1 4.000 0 0 0 0 0 5 + 5275 8258 5275 6750 5419 6750 5419 8258 5275 8258 +2 1 0 0 32 32 973 0 20 4.000 0 0 0 0 0 4 + 4923 6502 4923 5178 5415 5178 5415 6502 +2 1 0 1 33 33 972 0 -1 4.000 0 0 0 0 0 5 + 4919 6506 4919 5174 5419 5174 5419 6506 4919 6506 +2 1 0 1 33 33 970 0 -1 4.000 0 0 0 0 0 5 + 5183 6506 5183 5174 5419 5174 5419 6506 5183 6506 +2 1 0 1 33 33 969 0 -1 4.000 0 0 0 0 0 5 + 5275 6506 5275 5174 5419 5174 5419 6506 5275 6506 +2 1 0 0 32 32 968 0 20 4.000 0 0 0 0 0 4 + 3859 3986 3859 2446 4815 2446 4815 3986 +2 1 0 1 33 33 967 0 -1 4.000 0 0 0 0 0 5 + 3855 3990 3855 2442 4819 2442 4819 3990 3855 3990 +2 1 0 1 33 33 965 0 -1 4.000 0 0 0 0 0 5 + 4319 3990 4319 2442 4819 2442 4819 3990 4319 3990 +2 1 0 1 33 33 964 0 -1 4.000 0 0 0 0 0 5 + 4411 3990 4411 2442 4819 2442 4819 3990 4411 3990 +2 1 0 0 32 32 961 0 20 4.000 0 0 0 0 0 4 + 3323 9042 3323 8014 3815 8014 3815 9042 +2 1 0 1 33 33 960 0 -1 4.000 0 0 0 0 0 5 + 3319 9046 3319 8010 3819 8010 3819 9046 3319 9046 +2 1 0 1 33 33 958 0 -1 4.000 0 0 0 0 0 5 + 3583 9046 3583 8010 3819 8010 3819 9046 3583 9046 +2 1 0 1 33 33 957 0 -1 4.000 0 0 0 0 0 5 + 3675 9046 3675 8010 3819 8010 3819 9046 3675 9046 +2 1 0 0 32 32 956 0 20 4.000 0 0 0 0 0 4 + 3323 9970 3323 9262 3815 9262 3815 9970 +2 1 0 1 33 33 955 0 -1 4.000 0 0 0 0 0 5 + 3319 9974 3319 9258 3819 9258 3819 9974 3319 9974 +2 1 0 1 33 33 953 0 -1 4.000 0 0 0 0 0 5 + 3583 9974 3583 9258 3819 9258 3819 9974 3583 9974 +2 1 0 1 33 33 952 0 -1 4.000 0 0 0 0 0 5 + 3675 9974 3675 9258 3819 9258 3819 9974 3675 9974 +2 1 0 1 33 33 951 0 -1 4.000 0 0 0 0 0 2 + 2943 8142 2407 8142 +2 1 0 1 33 33 950 0 -1 4.000 0 0 0 0 0 2 + 2943 9606 2943 6742 +2 1 0 0 7 7 949 0 20 4.000 0 0 0 0 0 4 + 2407 8142 2647 8054 2647 8230 2407 8142 +2 1 0 1 33 33 948 0 -1 4.000 0 0 0 0 0 4 + 2407 8142 2647 8054 2647 8230 2407 8142 +2 1 0 1 33 33 947 0 -1 4.000 0 0 0 0 0 2 + 3291 6742 2943 6742 +2 1 0 1 33 33 946 0 -1 4.000 0 0 0 0 0 2 + 3319 9606 2943 9606 +2 1 0 0 32 32 945 0 20 4.000 0 0 0 0 0 4 + 379 2718 379 1282 871 1282 871 2718 +2 1 0 1 33 33 944 0 -1 4.000 0 0 0 0 0 5 + 375 2722 375 1278 875 1278 875 2722 375 2722 +2 1 0 1 33 33 942 0 -1 4.000 0 0 0 0 0 5 + 639 2722 639 1278 875 1278 875 2722 639 2722 +2 1 0 1 33 33 941 0 -1 4.000 0 0 0 0 0 5 + 731 2722 731 1278 875 1278 875 2722 731 2722 +2 1 0 0 32 32 940 0 20 4.000 0 0 0 0 0 4 + 1659 6878 1659 5570 2151 5570 2151 6878 +2 1 0 1 33 33 939 0 -1 4.000 0 0 0 0 0 5 + 1655 6882 1655 5566 2155 5566 2155 6882 1655 6882 +2 1 0 1 33 33 937 0 -1 4.000 0 0 0 0 0 5 + 1919 6882 1919 5566 2155 5566 2155 6882 1919 6882 +2 1 0 1 33 33 936 0 -1 4.000 0 0 0 0 0 5 + 2011 6882 2011 5566 2155 5566 2155 6882 2011 6882 +2 1 0 0 32 32 935 0 20 4.000 0 0 0 0 0 4 + 1667 3406 1667 2258 2399 2258 2399 3406 +2 1 0 1 33 33 934 0 -1 4.000 0 0 0 0 0 5 + 1663 3410 1663 2254 2403 2254 2403 3410 1663 3410 +2 1 0 1 33 33 932 0 -1 4.000 0 0 0 0 0 5 + 1927 3410 1927 2254 2403 2254 2403 3410 1927 3410 +2 1 0 1 33 33 931 0 -1 4.000 0 0 0 0 0 5 + 2207 3410 2207 2254 2403 2254 2403 3410 2207 3410 +2 1 0 0 32 32 929 0 20 4.000 0 0 0 0 0 4 + 379 6710 379 5354 871 5354 871 6710 +2 1 0 1 33 33 928 0 -1 4.000 0 0 0 0 0 5 + 375 6714 375 5350 875 5350 875 6714 375 6714 +2 1 0 1 33 33 926 0 -1 4.000 0 0 0 0 0 5 + 639 6714 639 5350 875 5350 875 6714 639 6714 +2 1 0 1 33 33 925 0 -1 4.000 0 0 0 0 0 5 + 731 6714 731 5350 875 5350 875 6714 731 6714 +2 1 0 0 32 32 924 0 20 4.000 0 0 0 0 0 4 + 1659 5350 1659 3642 2151 3642 2151 5350 +2 1 0 1 33 33 923 0 -1 4.000 0 0 0 0 0 5 + 1655 5354 1655 3638 2155 3638 2155 5354 1655 5354 +2 1 0 1 33 33 921 0 -1 4.000 0 0 0 0 0 5 + 1919 5354 1919 3638 2155 3638 2155 5354 1919 5354 +2 1 0 1 33 33 920 0 -1 4.000 0 0 0 0 0 5 + 2011 5354 2011 3638 2155 3638 2155 5354 2011 5354 +2 1 0 1 33 33 919 0 -1 4.000 0 0 0 0 0 2 + 3319 8490 2943 8490 +2 1 0 0 32 32 918 0 20 4.000 0 0 0 0 0 4 + 379 8786 379 7118 871 7118 871 8786 +2 1 0 1 33 33 917 0 -1 4.000 0 0 0 0 0 5 + 375 8790 375 7114 875 7114 875 8790 375 8790 +2 1 0 1 33 33 915 0 -1 4.000 0 0 0 0 0 5 + 639 8790 639 7114 875 7114 875 8790 639 8790 +2 1 0 1 33 33 914 0 -1 4.000 0 0 0 0 0 5 + 731 8790 731 7114 875 7114 875 8790 731 8790 +2 1 0 0 32 32 913 0 20 4.000 0 0 0 0 0 4 + 1667 1994 1667 86 2399 86 2399 1994 +2 1 0 1 33 33 912 0 -1 4.000 0 0 0 0 0 5 + 1663 1998 1663 82 2403 82 2403 1998 1663 1998 +2 1 0 1 33 33 910 0 -1 4.000 0 0 0 0 0 5 + 1927 1998 1927 82 2403 82 2403 1998 1927 1998 +2 1 0 1 33 33 909 0 -1 4.000 0 0 0 0 0 5 + 2207 1998 2207 82 2403 82 2403 1998 2207 1998 +2 1 0 0 32 32 907 0 20 4.000 0 0 0 0 0 4 + 2939 4314 2939 3014 3431 3014 3431 4314 +2 1 0 1 33 33 906 0 -1 4.000 0 0 0 0 0 5 + 2935 4318 2935 3010 3435 3010 3435 4318 2935 4318 +2 1 0 1 33 33 904 0 -1 4.000 0 0 0 0 0 5 + 3199 4318 3199 3010 3435 3010 3435 4318 3199 4318 +2 1 0 1 33 33 903 0 -1 4.000 0 0 0 0 0 5 + 3291 4318 3291 3010 3435 3010 3435 4318 3291 4318 +2 1 0 0 32 32 902 0 20 4.000 0 0 0 0 0 4 + 2939 2758 2939 1370 3431 1370 3431 2758 +2 1 0 1 33 33 901 0 -1 4.000 0 0 0 0 0 5 + 2935 2762 2935 1366 3435 1366 3435 2762 2935 2762 +2 1 0 1 33 33 899 0 -1 4.000 0 0 0 0 0 5 + 3199 2762 3199 1366 3435 1366 3435 2762 3199 2762 +2 1 0 1 33 33 898 0 -1 4.000 0 0 0 0 0 5 + 3291 2762 3291 1366 3435 1366 3435 2762 3291 2762 +2 1 0 1 33 33 897 0 -1 4.000 0 0 0 0 0 2 + 1395 4238 1035 4238 +2 1 0 1 33 33 896 0 -1 4.000 0 0 0 0 0 2 + 1395 8142 1395 1042 +2 1 0 0 7 7 895 0 20 4.000 0 0 0 0 0 4 + 1035 4238 1275 4150 1275 4326 1035 4238 +2 1 0 1 33 33 894 0 -1 4.000 0 0 0 0 0 4 + 1035 4238 1275 4150 1275 4326 1035 4238 +2 1 0 1 33 33 893 0 -1 4.000 0 0 0 0 0 2 + 1663 1042 1395 1042 +2 1 0 1 33 33 892 0 -1 4.000 0 0 0 0 0 2 + 1663 2866 1395 2866 +2 1 0 1 33 33 891 0 -1 4.000 0 0 0 0 0 2 + 2767 2894 2407 2894 +2 1 0 1 33 33 890 0 -1 4.000 0 0 0 0 0 2 + 2767 3818 2767 2094 +2 1 0 0 7 7 889 0 20 4.000 0 0 0 0 0 4 + 2407 2894 2647 2806 2647 2982 2407 2894 +2 1 0 1 33 33 888 0 -1 4.000 0 0 0 0 0 4 + 2407 2894 2647 2806 2647 2982 2407 2894 +2 1 0 1 33 33 887 0 -1 4.000 0 0 0 0 0 2 + 4683 6718 4235 6718 +2 1 0 1 33 33 886 0 -1 4.000 0 0 0 0 0 2 + 4683 7542 4683 5942 +2 1 0 0 7 7 885 0 20 4.000 0 0 0 0 0 4 + 4235 6718 4475 6630 4475 6806 4235 6718 +2 1 0 1 33 33 884 0 -1 4.000 0 0 0 0 0 4 + 4235 6718 4475 6630 4475 6806 4235 6718 +2 1 0 1 33 33 883 0 -1 4.000 0 0 0 0 0 2 + 4919 7542 4683 7542 +2 1 0 1 33 33 882 0 -1 4.000 0 0 0 0 0 2 + 1663 8142 1395 8142 +2 1 0 1 33 33 881 0 -1 4.000 0 0 0 0 0 2 + 1655 6278 1395 6278 +2 1 0 1 33 33 880 0 -1 4.000 0 0 0 0 0 2 + 879 7930 1395 7930 +2 1 0 1 33 33 879 0 -1 4.000 0 0 0 0 0 2 + 1655 4494 1395 4494 +2 1 0 1 33 33 878 0 -1 4.000 0 0 0 0 0 2 + 879 2018 1395 2018 +2 1 0 1 33 33 877 0 -1 4.000 0 0 0 0 0 2 + 2935 3818 2767 3818 +2 1 0 1 33 33 876 0 -1 4.000 0 0 0 0 0 2 + 2935 2094 2767 2094 +2 1 0 1 33 33 875 0 -1 4.000 0 0 0 0 0 2 + 4919 5942 4683 5942 +2 1 1 1 7 7 874 0 -1 4.000 0 0 0 0 0 2 + 2407 7350 3975 3994 +2 1 1 1 0 0 873 0 -1 4.000 0 0 0 0 0 2 + 2407 7350 3975 3994 +2 1 0 0 7 7 872 0 20 4.000 0 0 0 0 0 4 + 3975 3994 3795 4174 3955 4246 3975 3994 +2 1 0 1 33 33 871 0 -1 4.000 0 0 0 0 0 4 + 3975 3994 3795 4174 3955 4246 3975 3994 +2 1 0 1 33 33 870 0 -1 4.000 0 0 0 0 0 2 + 879 6074 1395 6074 +4 0 0 996 -1 16 10 1.5708 4 120 720 291 4614 Instruction\001 +4 0 0 993 -1 16 10 1.5708 4 150 660 531 4770 tag : byte\001 +4 0 0 992 -1 16 10 1.5708 4 150 1215 719 4770 length, offset : int\001 +4 0 0 989 -1 16 10 1.5708 4 120 1215 1863 8778 BranchInstruction\001 +4 0 0 986 -1 16 10 1.5708 4 150 1755 2103 8954 target : InstructionHandle\001 +4 0 0 983 -1 16 10 1.5708 4 120 435 3491 6902 Select\001 +4 0 0 980 -1 16 10 1.5708 4 150 1920 3731 7574 targets : InstructionHandle[]\001 +4 0 0 979 -1 16 10 1.5708 4 150 705 3919 7574 keys : int[]\001 +4 0 0 976 -1 16 10 1.5708 4 105 1230 5119 8170 LOOKUPSWITCH\001 +4 0 0 971 -1 16 10 1.5708 4 105 1080 5119 6426 TABLESWITCH\001 +4 0 0 966 -1 16 10 1.5708 4 150 1305 4255 3902 InstructionTargeter\001 +4 0 0 963 -1 16 10 1.5708 4 150 1035 4683 3754 updateTarget()\001 +4 0 0 962 -1 16 10 1.5708 4 120 975 4055 3726 <>\001 +4 0 0 959 -1 16 10 1.5708 4 120 810 3519 8946 IfInstruction\001 +4 0 0 954 -1 16 10 1.5708 4 105 450 3519 9858 GOTO\001 +4 0 0 943 -1 16 10 1.5708 4 120 1185 575 2622 ReturnInstruction\001 +4 0 0 938 -1 16 10 1.5708 4 150 1080 1855 6790 ArrayInstruction\001 +4 0 0 933 -1 16 10 1.5708 4 120 930 1863 3318 CPInstruction\001 +4 0 0 930 -1 16 10 1.5708 4 120 675 2103 3174 index : int\001 +4 0 0 927 -1 16 10 1.5708 4 120 1110 575 6610 StackInstruction\001 +4 0 0 922 -1 16 10 1.5708 4 120 1500 1855 5282 ConversionInstruction\001 +4 0 0 916 -1 16 10 1.5708 4 120 1395 575 8690 ArithmeticInstruction\001 +4 0 0 911 -1 16 10 1.5708 4 120 1665 1863 1914 LocalVariableInstruction\001 +4 0 0 908 -1 16 10 1.5708 4 120 675 2103 1762 index : int\001 +4 0 0 905 -1 16 10 1.5708 4 120 1050 3135 4214 FieldInstruction\001 +4 0 0 900 -1 16 10 1.5708 4 120 1185 3135 2674 InvokeInstruction\001 +-6 diff --git a/docs/eps/javaclass.eps b/docs/eps/javaclass.eps new file mode 100644 index 00000000..cbfa8924 --- /dev/null +++ b/docs/eps/javaclass.eps @@ -0,0 +1,525 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:45:7 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 471 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1233.763 -187.599 translate +90 rotate +1.782 1.782 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 712 1406 246 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 958 1405 M 711 1405 I 711 1499 I 958 1499 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S1C F0 [28.75 0 0 -28.75 0 0 ] mFS +F0S1C Ji +735 1441 M (ExceptionTable)[19 13 15 16 16 8 7 16 16 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 958 1456 M 711 1456 I 711 1499 I 958 1499 I C +K +N 958 1473 M 711 1473 I 711 1499 I 958 1499 I C +K +: N 1484 1418 275 93 rp C +1 1 0.801 1 scol L ; N 1759 1417 M 1483 1417 I 1483 1511 I 1759 1511 I C +K +0 0 0 1 scol 1505 1453 M (LineNumberTable)[16 7 16 16 21 16 25 16 16 10 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 1759 1469 M 1483 1469 I 1483 1511 I 1759 1511 I C +K +N 1759 1485 M 1483 1485 I 1483 1511 I 1759 1511 I C +K +: N 1039 1411 318 253 rp C +1 1 0.801 1 scol L ; N 1357 1410 M 1038 1410 I 1038 1664 I 1357 1664 I C +K +0 0 0 1 scol 1163 1446 M (Code)[21 16 16 0]xS +0.602 0 0.199 1 scol N 1357 1462 M 1038 1462 I 1038 1664 I 1357 1664 I C +K +N 1357 1578 M 1038 1578 I 1038 1664 I 1357 1664 I C +K +0 0 0 1 scol 1083 1493 M (max_stack : int)[25 16 13 16 15 8 16 15 14 8 8 8 7 16 0]xS +1083 1527 M (max_locals : int)[25 16 13 16 7 16 15 16 7 15 8 8 8 7 16 0]xS +1083 1560 M (exception_handlers)[16 13 15 16 16 8 7 16 16 16 16 16 16 16 7 16 10 0]xS +1083 1626 M (getCode\(\))[16 16 8 21 16 16 16 10 0]xS +0.602 0 0.199 1 scol N 1420 1499 M 1358 1508 I K +N 1358 1508 M 1380 1516 I 1398 1502 I 1377 1494 I 1358 1508 I C +: 1 1 1 1 scol O ; K +N 1420 1499 M 1482 1487 I K +N 1462 1432 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1462 1459 M (1)S +N 1462 1432 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1462 1459 M (1)S +: N 1742 1576 291 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2033 1575 M 1741 1575 I 1741 1669 I 2033 1669 I C +K +0 0 0 1 scol 1762 1611 M (LocalVariableTable)[16 16 15 16 7 19 16 10 7 16 16 7 16 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 2033 1626 M 1741 1626 I 1741 1669 I 2033 1669 I C +K +N 2033 1643 M 1741 1643 I 1741 1669 I 2033 1669 I C +K +N 1549 1580 M 1358 1556 I K +N 1358 1556 M 1380 1547 I 1398 1562 I 1377 1570 I 1358 1556 I C +: 1 1 1 1 scol O ; K +N 1549 1580 M 1740 1603 I K +: N 1709 1625 15 34 rp C +1 1 1 1 scol L ; N 1709 1625 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1709 1652 M (1)S +: N 1709 1625 15 34 rp C +1 1 1 1 scol L ; N 1709 1625 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1709 1652 M (1)S +: N 1573 1128 218 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1791 1127 M 1572 1127 I 1572 1221 I 1791 1221 I C +K +0 0 0 1 scol 1597 1163 M (InnerClasses)[7 16 16 16 10 21 7 16 15 15 16 0]xS +0.602 0 0.199 1 scol N 1791 1178 M 1572 1178 I 1572 1221 I 1791 1221 I C +K +N 1791 1195 M 1572 1195 I 1572 1221 I 1791 1221 I C +K +: N 1855 1128 186 93 rp C +1 1 0.801 1 scol L ; N 2041 1127 M 1854 1127 I 1854 1221 I 2041 1221 I C +K +0 0 0 1 scol 1878 1163 M (SourceFile)[19 16 16 10 15 16 18 7 7 0]xS +0.602 0 0.199 1 scol N 2041 1178 M 1854 1178 I 1854 1221 I 2041 1221 I C +K +N 2041 1195 M 1854 1195 I 1854 1221 I 2041 1221 I C +K +: N 450 1406 190 93 rp C +1 1 0.801 1 scol L ; N 640 1405 M 449 1405 I 449 1499 I 640 1499 I C +K +0 0 0 1 scol 470 1441 M (Deprecated)[21 16 16 10 16 15 16 8 16 0]xS +0.602 0 0.199 1 scol N 640 1456 M 449 1456 I 449 1499 I 640 1499 I C +K +N 640 1473 M 449 1473 I 449 1499 I 640 1499 I C +K +: N 2049 1418 161 93 rp C +1 1 0.801 1 scol L ; N 2210 1417 M 2048 1417 I 2048 1511 I 2210 1511 I C +K +0 0 0 1 scol 2069 1453 M (Unknown)[21 16 14 16 16 21 0]xS +0.602 0 0.199 1 scol N 2210 1469 M 2048 1469 I 2048 1511 I 2210 1511 I C +K +N 2210 1485 M 2048 1485 I 2048 1511 I 2210 1511 I C +K +: N 2105 1128 171 93 rp C +1 1 0.801 1 scol L ; N 2276 1127 M 2104 1127 I 2104 1221 I 2276 1221 I C +K +0 0 0 1 scol 2131 1163 M (Synthetic)[19 13 16 8 16 16 8 7 0]xS +0.602 0 0.199 1 scol N 2276 1178 M 2104 1178 I 2104 1221 I 2276 1221 I C +K +N 2276 1195 M 2104 1195 I 2104 1221 I 2276 1221 I C +K +: N 521 1128 240 93 rp C +1 1 0.801 1 scol L ; N 761 1127 M 520 1127 I 520 1221 I 761 1221 I C +K +0 0 0 1 scol 546 1163 M (ConstantValue)[21 16 16 15 8 16 16 8 19 16 7 16 0]xS +0.602 0 0.199 1 scol N 761 1177 M 520 1177 I 520 1221 I 761 1221 I C +K +N 761 1193 M 520 1193 I 520 1221 I 761 1221 I C +K +: N 491 628 204 125 rp C +1 1 0.801 1 scol L ; N 695 627 M 490 627 I 490 753 I 695 753 I C +K +0.496 0.496 0.496 1 scol 1 Lj 1 Lc 12 Lw solid N 495 748 M 691 748 I 691 632 I : 0.754 0.754 +S K +; 0 0 0 1 scol 513 663 M (ClassParser)[21 7 16 15 15 19 16 10 15 16 0]xS +0.602 0 0.199 1 scol 1 Lw solid N 695 676 M 490 676 I 490 753 I 695 753 I C +K +N 695 693 M 490 693 I 490 753 I 695 753 I C +K +0 0 0 1 scol 535 741 M (parse\(\))[16 16 10 15 16 10 0]xS +: N 1168 1116 157 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1325 1115 M 1167 1115 I 1167 1209 I 1325 1209 I C +K +0 0 0 1 scol 1192 1151 M (Attribute)[19 8 8 10 7 16 16 8 0]xS +0.602 0 0.199 1 scol N 1325 1164 M 1167 1164 I 1167 1209 I 1325 1209 I C +K +N 1325 1181 M 1167 1181 I 1167 1209 I 1325 1209 I C +K +N 1225 1279 M 1225 1210 I K +N 528 1279 M 2187 1279 I K +N 1225 1210 M 1242 1255 I 1209 1255 I C +: 1 1 1 1 scol O ; K +N 1190 1410 M 1190 1279 I K +N 1091 1329 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1091 1356 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1602 1417 M 1602 1279 I K +N 1479 1381 251 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1479 1408 M (<>)[17 17 21 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1941 1222 M 1941 1279 I K +N 1823 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1823 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 840 1405 M 840 1279 I K +N 728 1326 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 728 1353 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 2132 1417 M 2132 1279 I K +N 528 1405 M 528 1279 I K +N 416 1326 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 416 1353 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1870 1575 M 1870 1279 I K +N 1748 1523 250 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1748 1550 M (<>)[17 17 21 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1673 1222 M 1673 1279 I K +N 1541 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1541 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 2187 1222 M 2187 1279 I K +N 2068 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 2068 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 638 1222 M 638 1279 I K +N 536 1233 245 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 536 1260 M (<>)[17 17 18 7 16 7 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +: N 1130 845 233 126 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1363 844 M 1129 844 I 1129 971 I 1363 971 I C +K +0 0 0 1 scol +%%IncludeResource: font Helvetica-Oblique +F /F1 0 /256 T /Helvetica-Oblique mF +/F1S1C F1 [28.75 0 0 -28.75 0 0 ] mFS +F1S1C Ji +1150 880 M (FieldOrMethod)[18 7 16 7 16 23 10 24 16 8 16 16 0]xS +0.602 0 0.199 1 scol N 1363 894 M 1129 894 I 1129 971 I 1363 971 I C +K +N 1363 911 M 1129 911 I 1129 971 I 1363 971 I C +K +0 0 0 1 scol 1174 960 M (getName\(\))[16 16 8 21 16 24 16 10 0]xS +: N 571 845 214 126 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 785 844 M 570 844 I 570 971 I 785 971 I C +K +0 0 0 1 scol 594 880 M (AccessFlags)[19 15 15 16 15 15 18 7 16 16 0]xS +0.602 0 0.199 1 scol N 785 894 M 570 894 I 570 971 I 785 971 I C +K +N 785 911 M 570 911 I 570 971 I 785 971 I C +K +0 0 0 1 scol 614 960 M (isPublic\(\))[7 15 19 16 16 7 7 15 10 0]xS +0.602 0 0.199 1 scol N 1128 908 M 786 908 I K +N 786 908 M 831 925 I 831 891 I C +: 1 1 1 1 scol O ; K +N 1237 1043 M 1237 972 I K +N 992 1043 M 1497 1043 I K +N 1237 972 M 1253 1017 I 1220 1017 I C +: 1 1 1 1 scol O ; K +: N 1494 1023 134 84 rp C +1 1 0.801 1 scol L ; N 1628 1022 M 1493 1022 I 1493 1107 I 1628 1107 I C +K +0 0 0 1 scol F0S1C Ji +1513 1058 M (Method)[23 16 8 16 16 0]xS +0.602 0 0.199 1 scol N 1628 1074 M 1493 1074 I 1493 1107 I 1628 1107 I C +K +N 1628 1090 M 1493 1090 I 1493 1107 I 1628 1107 I C +K +N 1409 1111 M 1492 1085 I K +N 1488 1110 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1488 1137 M (1)S +0.602 0 0.199 1 scol N 1492 1085 M 1476 1102 I 1454 1097 I 1470 1080 I 1492 1085 I C +: 1 1 1 1 scol O ; K +N 1409 1111 M 1326 1136 I K +N 1341 1157 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1341 1184 M (*)S +N 1488 1110 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1488 1137 M (1)S +N 1341 1157 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1341 1184 M (*)S +0.602 0 0.199 1 scol N 1497 1028 M 1497 1043 I K +: N 1734 802 235 139 rp C +1 1 0.801 1 scol L ; N 1969 801 M 1733 801 I 1733 941 I 1969 941 I C +K +0 0 0 1 scol 1764 837 M (ConstantPool)[21 16 16 15 8 16 16 8 19 16 16 0]xS +0.602 0 0.199 1 scol N 1969 853 M 1733 853 I 1733 941 I 1969 941 I C +K +N 1969 869 M 1733 869 I 1733 941 I 1969 941 I C +K +0 0 0 1 scol 1777 918 M (getConstant\(\))[16 16 8 21 16 16 15 8 16 16 8 10 0]xS +: N 1088 610 317 160 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1405 609 M 1087 609 I 1087 770 I 1405 770 I C +K +0 0 0 1 scol 1179 645 M (JavaClass)[15 16 13 16 21 7 16 15 0]xS +0.602 0 0.199 1 scol N 1405 659 M 1087 659 I 1087 770 I 1405 770 I C +K +N 1405 676 M 1087 676 I 1087 770 I 1405 770 I C +K +0 0 0 1 scol 1131 724 M (getInterfaceNames\(\))[16 16 8 7 16 8 16 10 8 16 15 16 21 16 25 16 15 10 0]xS +1131 757 M (getSuperclassName\(\))[16 16 8 19 16 16 16 10 15 7 16 15 15 21 16 25 16 10 0]xS +0.602 0 0.199 1 scol N 1419 896 M 1314 771 I K +N 1287 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1287 821 M (1)S +0.602 0 0.199 1 scol N 1314 771 M 1336 779 I 1340 802 I 1318 794 I 1314 771 I C +: 1 1 1 1 scol O ; K +N 1419 896 M 1524 1021 I K +N 1539 966 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1539 993 M (*)S +N 1287 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1287 821 M (1)S +N 1539 966 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1539 993 M (*)S +1 1 1 1 scol [ 72 24 ] 0 sd N 696 690 M 1086 690 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 696 690 M 1086 690 I K +3 Lw solid N 1086 690 M 1059 701 I : 0.754 0.754 +S K +; N 1086 690 M 1059 679 I : 0.754 0.754 +S K +; N 847 641 164 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 847 668 M (<>)[17 17 15 10 16 16 8 16 15 17 0]xS +0.602 0 0.199 1 scol 1 Lw solid N 1569 786 M 1406 737 I K +N 1569 786 M 1732 835 I K +N 1086 751 M 786 866 I K +N 786 866 M 834 866 I 822 834 I C +: 1 1 1 1 scol O ; K +: N 865 1023 134 84 rp C +1 1 0.801 1 scol L ; N 999 1022 M 864 1022 I 864 1107 I 999 1107 I C +K +0 0 0 1 scol 899 1058 M (Field)[18 7 16 7 0]xS +0.602 0 0.199 1 scol N 999 1072 M 864 1072 I 864 1107 I 999 1107 I C +K +N 999 1089 M 864 1089 I 864 1107 I 999 1107 I C +K +N 1083 1111 M 1000 1086 I K +N 990 1111 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 990 1138 M (1)S +0.602 0 0.199 1 scol N 1000 1086 M 1023 1081 I 1039 1098 I 1017 1102 I 1000 1086 I C +: 1 1 1 1 scol O ; K +N 1083 1111 M 1166 1136 I K +N 1165 1079 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1165 1106 M (*)S +N 990 1111 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 990 1138 M (1)S +N 1165 1079 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1165 1106 M (*)S +0.602 0 0.199 1 scol N 992 1067 M 992 1043 I K +N 1072 896 M 1177 771 I K +N 1190 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1190 821 M (1)S +0.602 0 0.199 1 scol N 1177 771 M 1173 794 I 1150 802 I 1155 779 I 1177 771 I C +: 1 1 1 1 scol O ; K +N 1072 896 M 967 1021 I K +N 1004 1018 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1004 1045 M (*)S +N 1190 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1190 821 M (1)S +N 1004 1018 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1004 1045 M (*)S +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica-Oblique +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore diff --git a/docs/eps/javaclass.fig b/docs/eps/javaclass.fig new file mode 100644 index 00000000..380a6537 --- /dev/null +++ b/docs/eps/javaclass.fig @@ -0,0 +1,353 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +0 32 #f9f9f9 +0 33 #303030 +0 34 #7e7e7e +6 1939 6082 2499 7310 +2 1 0 1 33 33 866 0 -1 4.000 0 0 0 0 0 5 + 1951 7310 1939 7186 2039 7114 2051 7234 1951 7310 +2 1 0 1 33 33 865 0 -1 4.000 0 0 0 0 0 2 + 2227 6698 2499 6082 +-6 +2 1 0 0 32 32 998 0 20 4.000 0 0 0 0 0 4 + 3983 8614 3983 7314 4475 7314 4475 8614 +2 1 0 1 33 33 997 0 -1 4.000 0 0 0 0 0 5 + 3979 8618 3979 7310 4479 7310 4479 8618 3979 8618 +2 1 0 1 33 33 995 0 -1 4.000 0 0 0 0 0 5 + 4243 8618 4243 7310 4479 7310 4479 8618 4243 8618 +2 1 0 1 33 33 994 0 -1 4.000 0 0 0 0 0 5 + 4335 8618 4335 7310 4479 7310 4479 8618 4335 8618 +2 1 0 0 32 32 993 0 20 4.000 0 0 0 0 0 4 + 4047 4530 4047 3078 4539 3078 4539 4530 +2 1 0 1 33 33 992 0 -1 4.000 0 0 0 0 0 5 + 4043 4534 4043 3074 4543 3074 4543 4534 4043 4534 +2 1 0 1 33 33 990 0 -1 4.000 0 0 0 0 0 5 + 4307 4534 4307 3074 4543 3074 4543 4534 4307 4534 +2 1 0 1 33 33 989 0 -1 4.000 0 0 0 0 0 5 + 4399 4534 4399 3074 4543 3074 4543 4534 4399 4534 +2 1 0 0 32 32 988 0 20 4.000 0 0 0 0 0 4 + 4011 6882 4011 5206 5343 5206 5343 6882 +2 1 0 1 33 33 987 0 -1 4.000 0 0 0 0 0 5 + 4007 6886 4007 5202 5347 5202 5347 6886 4007 6886 +2 1 0 1 33 33 985 0 -1 4.000 0 0 0 0 0 5 + 4271 6886 4271 5202 5347 5202 5347 6886 4271 6886 +2 1 0 1 33 33 984 0 -1 4.000 0 0 0 0 0 5 + 4927 6886 4927 5202 5347 5202 5347 6886 4927 6886 +2 1 0 1 33 33 979 0 -1 4.000 0 0 0 0 0 2 + 4475 4870 4523 5198 +2 1 0 0 7 7 978 0 20 4.000 0 0 0 0 0 5 + 4523 5198 4567 5082 4491 4986 4447 5098 4523 5198 +2 1 0 1 33 33 977 0 -1 4.000 0 0 0 0 0 5 + 4523 5198 4567 5082 4491 4986 4447 5098 4523 5198 +2 1 0 1 33 33 976 0 -1 4.000 0 0 0 0 0 2 + 4475 4870 4411 4538 +2 1 0 0 7 7 975 0 20 4.000 0 0 0 0 0 4 + 4119 4650 4119 4558 4307 4558 4307 4650 +2 1 0 0 7 7 973 0 20 4.000 0 0 0 0 0 4 + 4119 4650 4119 4558 4307 4558 4307 4650 +2 1 0 0 32 32 971 0 20 4.000 0 0 0 0 0 4 + 4879 3166 4879 1626 5371 1626 5371 3166 +2 1 0 1 33 33 970 0 -1 4.000 0 0 0 0 0 5 + 4875 3170 4875 1622 5375 1622 5375 3170 4875 3170 +2 1 0 1 33 33 968 0 -1 4.000 0 0 0 0 0 5 + 5139 3170 5139 1622 5375 1622 5375 3170 5139 3170 +2 1 0 1 33 33 967 0 -1 4.000 0 0 0 0 0 5 + 5231 3170 5231 1622 5375 1622 5375 3170 5231 3170 +2 1 0 1 33 33 966 0 -1 4.000 0 0 0 0 0 2 + 4903 4186 4779 5198 +2 1 0 0 7 7 965 0 20 4.000 0 0 0 0 0 5 + 4779 5198 4731 5082 4807 4982 4851 5098 4779 5198 +2 1 0 1 33 33 964 0 -1 4.000 0 0 0 0 0 5 + 4779 5198 4731 5082 4807 4982 4851 5098 4779 5198 +2 1 0 1 33 33 963 0 -1 4.000 0 0 0 0 0 2 + 4903 4186 5027 3174 +2 1 0 0 7 7 962 0 20 4.000 0 0 0 0 0 4 + 5139 3346 5139 3254 5327 3254 5327 3346 +2 1 0 0 7 7 960 0 20 4.000 0 0 0 0 0 4 + 5139 3346 5139 3254 5327 3254 5327 3346 +2 1 0 0 32 32 958 0 20 4.000 0 0 0 0 0 4 + 2511 4058 2511 2910 3003 2910 3003 4058 +2 1 0 1 33 33 957 0 -1 4.000 0 0 0 0 0 5 + 2507 4062 2507 2906 3007 2906 3007 4062 2507 4062 +2 1 0 1 33 33 955 0 -1 4.000 0 0 0 0 0 5 + 2771 4062 2771 2906 3007 2906 3007 4062 2771 4062 +2 1 0 1 33 33 954 0 -1 4.000 0 0 0 0 0 5 + 2863 4062 2863 2906 3007 2906 3007 4062 2863 4062 +2 1 0 0 32 32 953 0 20 4.000 0 0 0 0 0 4 + 2511 2566 2511 1586 3003 1586 3003 2566 +2 1 0 1 33 33 952 0 -1 4.000 0 0 0 0 0 5 + 2507 2570 2507 1582 3007 1582 3007 2570 2507 2570 +2 1 0 1 33 33 950 0 -1 4.000 0 0 0 0 0 5 + 2751 2570 2751 1582 3007 1582 3007 2570 2751 2570 +2 1 0 1 33 33 949 0 -1 4.000 0 0 0 0 0 5 + 2843 2570 2843 1582 3007 1582 3007 2570 2843 2570 +2 1 0 0 32 32 948 0 20 4.000 0 0 0 0 0 4 + 3983 10002 3983 8998 4475 8998 4475 10002 +2 1 0 1 33 33 947 0 -1 4.000 0 0 0 0 0 5 + 3979 10006 3979 8994 4479 8994 4479 10006 3979 10006 +2 1 0 1 33 33 945 0 -1 4.000 0 0 0 0 0 5 + 4243 10006 4243 8994 4479 8994 4479 10006 4243 10006 +2 1 0 1 33 33 944 0 -1 4.000 0 0 0 0 0 5 + 4335 10006 4335 8994 4479 8994 4479 10006 4335 10006 +2 1 0 0 32 32 943 0 20 4.000 0 0 0 0 0 4 + 4047 1542 4047 690 4539 690 4539 1542 +2 1 0 1 33 33 942 0 -1 4.000 0 0 0 0 0 5 + 4043 1546 4043 686 4543 686 4543 1546 4043 1546 +2 1 0 1 33 33 940 0 -1 4.000 0 0 0 0 0 5 + 4287 1546 4287 686 4543 686 4543 1546 4287 1546 +2 1 0 1 33 33 939 0 -1 4.000 0 0 0 0 0 5 + 4379 1546 4379 686 4543 686 4543 1546 4379 1546 +2 1 0 0 32 32 938 0 20 4.000 0 0 0 0 0 4 + 2511 1246 2511 346 3003 346 3003 1246 +2 1 0 1 33 33 937 0 -1 4.000 0 0 0 0 0 5 + 2507 1250 2507 342 3007 342 3007 1250 2507 1250 +2 1 0 1 33 33 935 0 -1 4.000 0 0 0 0 0 5 + 2751 1250 2751 342 3007 342 3007 1250 2751 1250 +2 1 0 1 33 33 934 0 -1 4.000 0 0 0 0 0 5 + 2843 1250 2843 342 3007 342 3007 1250 2843 1250 +2 1 0 0 32 32 933 0 20 4.000 0 0 0 0 0 4 + 2511 9622 2511 8354 3003 8354 3003 9622 +2 1 0 1 33 33 932 0 -1 4.000 0 0 0 0 0 5 + 2507 9626 2507 8350 3007 8350 3007 9626 2507 9626 +2 1 0 1 33 33 930 0 -1 4.000 0 0 0 0 0 5 + 2771 9626 2771 8350 3007 8350 3007 9626 2771 9626 +2 1 0 1 33 33 929 0 -1 4.000 0 0 0 0 0 5 + 2863 9626 2863 8350 3007 8350 3007 9626 2863 9626 +2 1 0 0 32 32 928 0 20 4.000 0 0 0 0 0 4 + 315 9526 315 8450 975 8450 975 9526 +2 1 0 1 33 33 927 0 -1 4.000 0 0 0 0 0 5 + 311 9530 311 8446 979 8446 979 9530 311 9530 +2 1 0 2 34 34 926 0 -1 4.000 0 0 0 0 0 3 + 955 9502 955 8470 339 8470 +2 1 0 1 33 33 924 0 -1 4.000 0 0 0 0 0 5 + 575 9530 575 8446 979 8446 979 9530 575 9530 +2 1 0 1 33 33 923 0 -1 4.000 0 0 0 0 0 5 + 667 9530 667 8446 979 8446 979 9530 667 9530 +2 1 0 0 32 32 921 0 20 4.000 0 0 0 0 0 4 + 2447 6074 2447 5246 2939 5246 2939 6074 +2 1 0 1 33 33 920 0 -1 4.000 0 0 0 0 0 5 + 2443 6078 2443 5242 2943 5242 2943 6078 2443 6078 +2 1 0 1 33 33 918 0 -1 4.000 0 0 0 0 0 5 + 2707 6078 2707 5242 2943 5242 2943 6078 2707 6078 +2 1 0 1 33 33 917 0 -1 4.000 0 0 0 0 0 5 + 2799 6078 2799 5242 2943 5242 2943 6078 2799 6078 +2 1 0 1 33 33 916 0 -1 4.000 0 0 0 0 0 2 + 3311 5658 2947 5658 +2 1 0 1 33 33 915 0 -1 4.000 0 0 0 0 0 2 + 3311 9586 3311 810 +2 1 0 0 7 7 914 0 20 4.000 0 0 0 0 0 4 + 2947 5658 3187 5570 3187 5746 2947 5658 +2 1 0 1 33 33 913 0 -1 4.000 0 0 0 0 0 4 + 2947 5658 3187 5570 3187 5746 2947 5658 +2 1 0 1 33 33 912 0 -1 4.000 0 0 0 0 0 2 + 4007 6086 3311 6086 +2 1 0 0 7 7 911 0 20 4.000 0 0 0 0 0 4 + 3563 6658 3563 5098 3751 5098 3751 6658 +2 1 0 1 33 33 909 0 -1 4.000 0 0 0 0 0 2 + 4043 3906 3311 3906 +2 1 0 0 7 7 908 0 20 4.000 0 0 0 0 0 4 + 3847 4598 3847 3186 4035 3186 4035 4598 +2 1 0 1 33 33 906 0 -1 4.000 0 0 0 0 0 2 + 3011 2114 3311 2114 +2 1 0 0 7 7 905 0 20 4.000 0 0 0 0 0 4 + 3067 2774 3067 1346 3255 1346 3255 2774 +2 1 0 1 33 33 903 0 -1 4.000 0 0 0 0 0 2 + 3979 7934 3311 7934 +2 1 0 0 7 7 902 0 20 4.000 0 0 0 0 0 4 + 3555 8578 3555 7018 3743 7018 3743 8578 +2 1 0 1 33 33 900 0 -1 4.000 0 0 0 0 0 2 + 4043 1102 3311 1102 +2 1 0 1 33 33 899 0 -1 4.000 0 0 0 0 0 2 + 3979 9586 3311 9586 +2 1 0 0 7 7 898 0 20 4.000 0 0 0 0 0 4 + 3555 10230 3555 8670 3743 8670 3743 10230 +2 1 0 0 32 32 896 0 20 4.000 0 0 0 0 0 4 + 1203 4066 1203 2518 2135 2518 2135 4066 +2 1 0 1 33 33 895 0 -1 4.000 0 0 0 0 0 5 + 1199 4070 1199 2514 2139 2514 2139 4070 1199 4070 +2 1 0 1 33 33 893 0 -1 4.000 0 0 0 0 0 5 + 1463 4070 1463 2514 2139 2514 2139 4070 1463 4070 +2 1 0 1 33 33 892 0 -1 4.000 0 0 0 0 0 5 + 1931 4070 1931 2514 2139 2514 2139 4070 1931 4070 +2 1 0 1 33 33 889 0 -1 4.000 0 0 0 0 0 2 + 2259 4658 2003 4074 +2 1 0 0 7 7 888 0 20 4.000 0 0 0 0 0 4 + 2135 4090 2135 3998 2323 3998 2323 4090 +2 1 0 0 7 7 886 0 20 4.000 0 0 0 0 0 5 + 2003 4074 2103 4150 2091 4270 1991 4198 2003 4074 +2 1 0 1 33 33 885 0 -1 4.000 0 0 0 0 0 5 + 2003 4074 2103 4150 2091 4270 1991 4198 2003 4074 +2 1 0 1 33 33 884 0 -1 4.000 0 0 0 0 0 2 + 2259 4658 2503 5238 +2 1 0 0 7 7 883 0 20 4.000 0 0 0 0 0 4 + 2583 5122 2583 5058 2771 5058 2771 5122 +2 1 0 0 7 7 881 0 20 4.000 0 0 0 0 0 4 + 2135 4090 2135 3998 2323 3998 2323 4090 +2 1 0 0 7 7 879 0 20 4.000 0 0 0 0 0 4 + 2583 5122 2583 5058 2771 5058 2771 5122 +2 1 0 0 32 32 877 0 20 4.000 0 0 0 0 0 4 + 1139 8866 1139 7318 2071 7318 2071 8866 +2 1 0 1 33 33 876 0 -1 4.000 0 0 0 0 0 5 + 1135 8870 1135 7314 2075 7314 2075 8870 1135 8870 +2 1 0 1 33 33 874 0 -1 4.000 0 0 0 0 0 5 + 1399 8870 1399 7314 2075 7314 2075 8870 1399 8870 +2 1 0 1 33 33 873 0 -1 4.000 0 0 0 0 0 5 + 1867 8870 1867 7314 2075 7314 2075 8870 1867 8870 +2 1 0 1 33 33 870 0 -1 4.000 0 0 0 0 0 2 + 2227 6698 1951 7310 +2 1 0 0 7 7 869 0 20 4.000 0 0 0 0 0 4 + 2083 7378 2083 7286 2271 7286 2271 7378 +2 1 0 0 7 7 867 0 20 4.000 0 0 0 0 0 5 + 1951 7310 1939 7186 2039 7114 2051 7234 1951 7310 +2 1 0 0 7 7 864 0 20 4.000 0 0 0 0 0 4 + 2187 6090 2187 6026 2375 6026 2375 6090 +2 1 0 0 7 7 862 0 20 4.000 0 0 0 0 0 4 + 2083 7378 2083 7286 2271 7286 2271 7378 +2 1 0 0 7 7 860 0 20 4.000 0 0 0 0 0 4 + 2187 6090 2187 6026 2375 6026 2375 6090 +2 1 0 0 32 32 858 0 20 4.000 0 0 0 0 0 4 + 79 6578 79 4742 1211 4742 1211 6578 +2 1 0 1 33 33 857 0 -1 4.000 0 0 0 0 0 5 + 75 6582 75 4738 1215 4738 1215 6582 75 6582 +2 1 0 1 33 33 855 0 -1 4.000 0 0 0 0 0 5 + 339 6582 339 4738 1215 4738 1215 6582 339 6582 +2 1 0 1 33 33 854 0 -1 4.000 0 0 0 0 0 5 + 619 6582 619 4738 1215 4738 1215 6582 619 6582 +2 1 0 1 33 33 850 0 -1 4.000 0 0 0 0 0 2 + 1187 4406 1043 4734 +2 1 0 0 7 7 849 0 20 4.000 0 0 0 0 0 4 + 1163 4826 1163 4734 1351 4734 1351 4826 +2 1 0 0 7 7 847 0 20 4.000 0 0 0 0 0 5 + 1043 4734 1031 4610 1131 4538 1143 4658 1043 4734 +2 1 0 1 33 33 846 0 -1 4.000 0 0 0 0 0 5 + 1043 4734 1031 4610 1131 4538 1143 4658 1043 4734 +2 1 0 1 33 33 845 0 -1 4.000 0 0 0 0 0 2 + 1187 4406 1331 4074 +2 1 0 0 7 7 844 0 20 4.000 0 0 0 0 0 4 + 1027 4062 1027 3998 1215 3998 1215 4062 +2 1 0 0 7 7 842 0 20 4.000 0 0 0 0 0 4 + 1163 4826 1163 4734 1351 4734 1351 4826 +2 1 0 0 7 7 840 0 20 4.000 0 0 0 0 0 4 + 1027 4062 1027 3998 1215 3998 1215 4062 +2 1 0 1 33 33 838 0 -1 4.000 0 0 0 0 0 2 + 1151 6950 1003 6586 +2 1 0 0 7 7 837 0 20 4.000 0 0 0 0 0 4 + 1127 6590 1127 6498 1315 6498 1315 6590 +2 1 0 0 7 7 835 0 20 4.000 0 0 0 0 0 5 + 1003 6586 1099 6662 1083 6786 987 6710 1003 6586 +2 1 0 1 33 33 834 0 -1 4.000 0 0 0 0 0 5 + 1003 6586 1099 6662 1083 6786 987 6710 1003 6586 +2 1 0 1 33 33 833 0 -1 4.000 0 0 0 0 0 2 + 1151 6950 1291 7310 +2 1 0 0 7 7 832 0 20 4.000 0 0 0 0 0 4 + 1383 7222 1383 7158 1571 7158 1571 7222 +2 1 0 0 7 7 830 0 20 4.000 0 0 0 0 0 4 + 1127 6590 1127 6498 1315 6498 1315 6590 +2 1 0 0 7 7 828 0 20 4.000 0 0 0 0 0 4 + 1383 7222 1383 7158 1571 7158 1571 7222 +2 1 1 1 7 7 826 0 -1 4.000 0 0 0 0 0 2 + 647 8442 647 6586 +2 1 1 1 0 0 825 0 -1 4.000 0 0 0 0 0 2 + 647 8442 647 6586 +2 1 0 1 0 0 824 0 -1 4.000 0 0 0 0 0 2 + 647 6586 707 6730 +2 1 0 1 0 0 823 0 -1 4.000 0 0 0 0 0 2 + 647 6586 587 6730 +2 1 0 0 7 7 822 0 20 4.000 0 0 0 0 0 4 + 379 7974 379 7050 567 7050 567 7974 +2 1 0 0 32 32 820 0 20 4.000 0 0 0 0 0 4 + 279 1994 279 750 1011 750 1011 1994 +2 1 0 1 33 33 819 0 -1 4.000 0 0 0 0 0 5 + 275 1998 275 746 1015 746 1015 1998 275 1998 +2 1 0 1 33 33 817 0 -1 4.000 0 0 0 0 0 5 + 519 1998 519 746 1015 746 1015 1998 519 1998 +2 1 0 1 33 33 816 0 -1 4.000 0 0 0 0 0 5 + 611 1998 611 746 1015 746 1015 1998 611 1998 +2 1 0 1 33 33 814 0 -1 4.000 0 0 0 0 0 2 + 647 3370 647 4734 +2 1 0 1 33 33 813 0 -1 4.000 0 0 0 0 0 2 + 647 3370 647 2002 +2 1 0 1 33 33 812 0 -1 4.000 0 0 0 0 0 2 + 4875 2490 3311 2490 +2 1 0 1 33 33 809 0 -1 4.000 0 0 0 0 0 2 + 3011 3530 3311 3530 +2 1 0 0 7 7 808 0 20 4.000 0 0 0 0 0 4 + 3067 4266 3067 2838 3255 2838 3255 4266 +2 1 0 1 33 33 806 0 -1 4.000 0 0 0 0 0 2 + 3011 810 3311 810 +2 1 0 0 7 7 805 0 20 4.000 0 0 0 0 0 4 + 3067 1482 3067 54 3255 54 3255 1482 +2 1 0 1 33 33 803 0 -1 4.000 0 0 0 0 0 2 + 3011 9002 3311 9002 +2 1 0 0 7 7 802 0 20 4.000 0 0 0 0 0 4 + 3063 9578 3063 8206 3251 8206 3251 9578 +2 1 0 1 0 0 866 0 -1 0.000 0 0 0 0 0 5 + 1224 5762 1331 5699 1439 5760 1335 5821 1224 5762 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 + 1451 5759 2426 5759 +4 0 0 996 -1 16 10 1.5708 4 150 1080 4179 8526 ExceptionTable\001 +4 0 0 991 -1 16 10 1.5708 4 120 1230 4243 4466 LineNumberTable\001 +4 0 0 986 -1 16 10 1.5708 4 120 375 4207 6242 Code\001 +4 0 0 983 -1 16 10 1.5708 4 150 1035 4447 6650 max_stack : int\001 +4 0 0 982 -1 16 10 1.5708 4 150 1065 4635 6650 max_locals : int\001 +4 0 0 981 -1 16 10 1.5708 4 150 1365 4823 6650 exception_handlers\001 +4 0 0 980 -1 16 10 1.5708 4 150 690 5199 6650 getCode()\001 +4 0 0 974 -1 16 10 1.5708 4 105 90 4271 4650 1\001 +4 0 0 972 -1 16 10 1.5708 4 105 90 4271 4650 1\001 +4 0 0 969 -1 16 10 1.5708 4 120 1335 5075 3106 LocalVariableTable\001 +4 0 0 961 -1 16 10 1.5708 4 105 90 5291 3346 1\001 +4 0 0 959 -1 16 10 1.5708 4 105 90 5291 3346 1\001 +4 0 0 956 -1 16 10 1.5708 4 120 900 2707 3962 InnerClasses\001 +4 0 0 951 -1 16 10 1.5708 4 120 735 2707 2470 SourceFile\001 +4 0 0 946 -1 16 10 1.5708 4 150 810 4179 9926 Deprecated\001 +4 0 0 941 -1 16 10 1.5708 4 120 645 4243 1458 Unknown\001 +4 0 0 936 -1 16 10 1.5708 4 150 645 2707 1126 Synthetic\001 +4 0 0 931 -1 16 10 1.5708 4 120 1035 2707 9526 ConstantValue\001 +4 0 0 925 -1 16 10 1.5708 4 120 825 511 9434 ClassParser\001 +4 0 0 919 -1 16 10 1.5708 4 120 585 2643 5962 Attribute\001 +4 0 0 910 -1 16 10 1.5708 4 120 1500 3715 6658 <>\001 +4 0 0 904 -1 16 10 1.5708 4 120 1350 3219 2774 <>\001 +4 0 0 901 -1 16 10 1.5708 4 120 1500 3707 8578 <>\001 +4 0 0 897 -1 16 10 1.5708 4 120 1500 3707 10230 <>\001 +4 0 0 894 -1 16 10 1.5708 4 120 525 1399 3562 Method\001 +4 0 0 891 -1 16 10 1.5708 4 150 1200 1639 3834 access_flags : int\001 +4 0 0 890 -1 16 10 1.5708 4 150 1185 1827 3834 signature : String\001 +4 0 0 887 -1 16 10 1.5708 4 105 90 2287 4090 1\001 +4 0 0 882 -1 16 10 1.5708 4 60 60 2735 5122 *\001 +4 0 0 880 -1 16 10 1.5708 4 105 90 2287 4090 1\001 +4 0 0 878 -1 16 10 1.5708 4 60 60 2735 5122 *\001 +4 0 0 875 -1 16 10 1.5708 4 120 330 1335 8270 Field\001 +4 0 0 872 -1 16 10 1.5708 4 150 1200 1575 8634 access_flags : int\001 +4 0 0 871 -1 16 10 1.5708 4 150 1185 1763 8634 signature : String\001 +4 0 0 868 -1 16 10 1.5708 4 105 90 2235 7378 1\001 +4 0 0 863 -1 16 10 1.5708 4 60 60 2339 6090 *\001 +4 0 0 861 -1 16 10 1.5708 4 105 90 2235 7378 1\001 +4 0 0 859 -1 16 10 1.5708 4 60 60 2339 6090 *\001 +4 0 0 856 -1 16 10 1.5708 4 120 705 275 6038 JavaClass\001 +4 0 0 853 -1 16 10 1.5708 4 150 1200 515 6346 access_flags : int\001 +4 0 0 852 -1 16 10 1.5708 4 150 1410 891 6346 getInterfaceNames()\001 +4 0 0 851 -1 16 10 1.5708 4 150 1485 1079 6346 getSuperclassName()\001 +4 0 0 848 -1 16 10 1.5708 4 105 90 1315 4826 1\001 +4 0 0 843 -1 16 10 1.5708 4 60 60 1179 4062 *\001 +4 0 0 841 -1 16 10 1.5708 4 105 90 1315 4826 1\001 +4 0 0 839 -1 16 10 1.5708 4 60 60 1179 4062 *\001 +4 0 0 836 -1 16 10 1.5708 4 105 90 1279 6590 1\001 +4 0 0 831 -1 16 10 1.5708 4 60 60 1535 7222 *\001 +4 0 0 829 -1 16 10 1.5708 4 105 90 1279 6590 1\001 +4 0 0 827 -1 16 10 1.5708 4 60 60 1535 7222 *\001 +4 0 0 821 -1 16 10 1.5708 4 90 870 531 7974 <>\001 +4 0 0 818 -1 16 10 1.5708 4 120 945 475 1866 ConstantPool\001 +4 0 0 815 -1 16 10 1.5708 4 135 945 883 1762 getConstant()\001 +4 0 0 807 -1 16 10 1.5708 4 120 1350 3219 4266 <>\001 +4 0 0 804 -1 16 10 1.5708 4 120 1350 3219 1482 <>\001 +4 0 0 801 -1 16 10 1.5708 4 120 1305 3215 9578 <>\001 +4 0 0 922 -1 16 10 1.5708 4 135 480 864 9294 parse()\001 +4 0 0 907 -1 16 10 1.5708 4 120 1350 3924 4583 <>\001 +4 0 0 810 -1 16 10 1.5708 4 120 1350 4725 3075 <>\001 diff --git a/docs/eps/jvm.eps b/docs/eps/jvm.eps new file mode 100644 index 00000000..c85c7617 --- /dev/null +++ b/docs/eps/jvm.eps @@ -0,0 +1,218 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: jvm.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Thu Nov 19 11:55:18 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 439 199 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-17.0 217.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 4612 m -1000 -1000 l 8588 -1000 l 8588 4612 l cp clip + 0.06000 0.06000 sc +/Courier ff 285.00 scf sf +6600 1575 m +gs 1 -1 sc (java) col0 sh gr +/Courier ff 285.00 scf sf +2550 1575 m +gs 1 -1 sc (javac) col0 sh gr +/Courier-Bold ff 150.00 scf sf +4290 1155 m +gs 1 -1 sc (08 1a 42 ...) col0 sh gr +/Courier-Bold ff 150.00 scf sf +4290 990 m +gs 1 -1 sc (ca fe ba be) col0 sh gr +% Polyline +7.500 slw +n 6405 1200 m 6300 1200 6300 1695 105 arcto 4 {pop} repeat + 6300 1800 7395 1800 105 arcto 4 {pop} repeat + 7500 1800 7500 1305 105 arcto 4 {pop} repeat + 7500 1200 6405 1200 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 2505 1200 m 2400 1200 2400 1695 105 arcto 4 {pop} repeat + 2400 1800 3495 1800 105 arcto 4 {pop} repeat + 3600 1800 3600 1305 105 arcto 4 {pop} repeat + 3600 1200 2505 1200 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +30.000 slw +gs clippath +2280 1470 m 2400 1500 l 2280 1530 l 2445 1530 l 2445 1470 l cp +clip +n 1800 1500 m 2400 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 2280 1470 m 2400 1500 l 2280 1530 l 2280 1500 l 2280 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +4080 1470 m 4200 1500 l 4080 1530 l 4245 1530 l 4245 1470 l cp +clip +n 3600 1500 m 4200 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 4080 1470 m 4200 1500 l 4080 1530 l 4080 1500 l 4080 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +6180 1470 m 6300 1500 l 6180 1530 l 6345 1530 l 6345 1470 l cp +clip +n 5700 1500 m 6300 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 6180 1470 m 6300 1500 l 6180 1530 l 6180 1500 l 6180 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +n 5415 615 m 5415 915 l 5715 915 l gs col0 s gr +% Polyline +n 4215 615 m 4215 2415 l 5715 2415 l 5715 915 l 5415 615 l 4215 615 l cp gs col0 s gr +% Polyline +gs clippath +7006 1136 m 6900 1200 l 6964 1094 l 6847 1211 l 6889 1253 l cp +clip +n 7500 600 m 6900 1200 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 7006 1136 m 6900 1200 l 6964 1094 l 6985 1115 l 7006 1136 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +6630 1080 m 6600 1200 l 6570 1080 l 6570 1245 l 6630 1245 l cp +clip +n 6600 1200 m 6600 600 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 6630 1080 m 6600 1200 l 6570 1080 l 6600 1080 l 6630 1080 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 300 3000 m 3600 3000 l 3600 3600 l 300 3600 l cp gs 0.90 setgray ef gr gs col0 s gr +% Polyline +n 4200 3000 m 7500 3000 l 7500 3600 l 4200 3600 l cp gs 0.90 setgray ef gr gs col0 s gr +% Polyline +n 1500 600 m 1500 900 l 1800 900 l gs col0 s gr +% Polyline +n 300 600 m 300 2400 l 1800 2400 l 1800 900 l 1500 600 l 300 600 l cp gs col0 s gr +/Helvetica ff 180.00 scf sf +6450 450 m +gs 1 -1 sc (Other classes) col0 sh gr +/Courier ff 150.00 scf sf +375 975 m +gs 1 -1 sc (public class) col0 sh gr +/Courier ff 150.00 scf sf +375 1140 m +gs 1 -1 sc (HelloWorld {) col0 sh gr +/Courier ff 150.00 scf sf +375 1305 m +gs 1 -1 sc ( ...) col0 sh gr +/Courier ff 150.00 scf sf +375 1635 m +gs 1 -1 sc ( void hello\(\) {) col0 sh gr +/Courier ff 150.00 scf sf +375 1800 m +gs 1 -1 sc ( ...) col0 sh gr +/Courier ff 150.00 scf sf +375 1965 m +gs 1 -1 sc ( }) col0 sh gr +/Courier ff 150.00 scf sf +375 2130 m +gs 1 -1 sc (}) col0 sh gr +/Helvetica ff 180.00 scf sf +4275 2625 m +gs 1 -1 sc (HelloWorld.class) col0 sh gr +/Helvetica-Bold ff 300.00 scf sf +900 3375 m +gs 1 -1 sc (Java language) col0 sh gr +/Helvetica-Bold ff 300.00 scf sf +4350 3375 m +gs 1 -1 sc (Java Virtual Machine) col0 sh gr +/Helvetica ff 180.00 scf sf +375 2625 m +gs 1 -1 sc (HelloWorld.java) col-1 sh gr +$F2psEnd +rs diff --git a/docs/eps/jvm.fig b/docs/eps/jvm.fig new file mode 100644 index 00000000..b8688c64 --- /dev/null +++ b/docs/eps/jvm.fig @@ -0,0 +1,62 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +6 2400 1200 3600 1800 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 3600 1800 3600 1200 2400 1200 2400 1800 3600 1800 +4 0 0 836 -1 12 19 0.0000 4 225 825 2550 1575 javac\001 +-6 +6 4215 840 5415 1290 +4 0 0 100 0 14 10 0.0000 4 105 1080 4290 1155 08 1a 42 ...\001 +4 0 0 100 0 14 10 0.0000 4 105 990 4290 990 ca fe ba be\001 +-6 +6 6300 1200 7500 1800 +2 4 0 1 0 7 100 0 -1 0.000 0 0 7 0 0 5 + 7500 1800 7500 1200 6300 1200 6300 1800 7500 1800 +4 0 0 837 -1 12 19 0.0000 4 225 660 6600 1575 java\001 +-6 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 1800 1500 2400 1500 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3600 1500 4200 1500 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 5700 1500 6300 1500 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 5415 615 5415 915 5715 915 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 0 0 6 + 4215 615 4215 2415 5715 2415 5715 915 5415 615 4215 615 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7500 600 6900 1200 +2 1 0 3 0 7 100 0 -1 0.000 0 0 -1 0 1 2 + 1 1 1.00 60.00 120.00 + 6600 1200 6600 600 +2 2 0 1 0 0 100 0 2 0.000 0 0 -1 0 0 5 + 300 3000 3600 3000 3600 3600 300 3600 300 3000 +2 2 0 1 0 0 100 0 2 0.000 0 0 -1 0 0 5 + 4200 3000 7500 3000 7500 3600 4200 3600 4200 3000 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 1500 600 1500 900 1800 900 +2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 6 + 300 600 300 2400 1800 2400 1800 900 1500 600 300 600 +4 0 0 100 0 16 12 0.0000 4 135 1110 6450 450 Other classes\001 +4 0 0 100 0 5 10 0.0000 0 135 1080 375 975 public class\001 +4 0 0 100 0 5 10 0.0000 0 135 1080 375 1140 HelloWorld {\001 +4 0 0 100 0 5 10 0.0000 0 15 450 375 1305 ...\001 +4 0 0 100 0 5 10 0.0000 0 135 1440 375 1635 void hello() {\001 +4 0 0 100 0 5 10 0.0000 0 15 630 375 1800 ...\001 +4 0 0 100 0 5 10 0.0000 0 135 270 375 1965 }\001 +4 0 0 100 0 5 10 0.0000 0 135 90 375 2130 }\001 +4 0 -1 0 0 16 12 0.0000 4 180 1305 375 2625 HelloWorld.java\001 +4 0 0 100 0 16 12 0.0000 4 135 1380 4275 2625 HelloWorld.class\001 +4 0 0 100 0 18 20 0.0000 4 285 2055 900 3375 Java language\001 +4 0 0 100 0 18 20 0.0000 4 255 2985 4350 3375 Java Virtual Machine\001 diff --git a/docs/generic.mdl b/docs/generic.mdl new file mode 100644 index 00000000..24dbc853 --- /dev/null +++ b/docs/generic.mdl @@ -0,0 +1,2860 @@ + +(object Petal + version 42 + _written "Rose 4.5.8054a" + charSet 0) + +(object Design "Logical View" + is_unit TRUE + is_loaded TRUE + defaults (object defaults + rightMargin 0.000000 + leftMargin 0.000000 + topMargin 0.000000 + bottomMargin 0.000000 + pageOverlap 0.000000 + clipIconLabels TRUE + autoResize TRUE + snapToGrid TRUE + gridX 16 + gridY 16 + defaultFont (object Font + size 10 + face "Arial" + bold FALSE + italics FALSE + underline FALSE + strike FALSE + color 0 + default_color TRUE) + showMessageNum 1 + showClassOfObject TRUE + notation "Unified") + root_usecase_package (object Class_Category "Use Case View" + quid "3659ABB20065" + exportControl "Public" + global TRUE + logical_models (list unit_reference_list) + logical_presentations (list unit_reference_list + (object UseCaseDiagram "Main" + quid "3659ABB60100" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + root_category (object Class_Category "Logical View" + quid "3659ABB20064" + exportControl "Public" + global TRUE + subsystem "Component View" + quidu "3659ABB2006D" + logical_models (list unit_reference_list + (object Class "ClassGen" + quid "3659ABD700A2" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3783462E016B" + supplier "Logical View::AccessFlags" + quidu "378345EC0044")) + operations (list Operations + (object Operation "addInterface" + quid "3659AD040069" + parameters (list Parameters + (object Parameter "String name")) + result "void" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "addMethod" + quid "378349A800F3" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + module "Component View::ClassGen" + quidu "3659AD9C02CB" + language "Java") + (object Class "ConstantPoolGen" + quid "3659AC570165" + operations (list Operations + (object Operation "addClass" + quid "3659ADC40188" + parameters (list Parameters + (object Parameter "String name")) + result "int" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "addMethodRef" + quid "3659AEE40132" + parameters (list Parameters + (object Parameter "String class_name") + (object Parameter "String method_name") + (object Parameter "String signature")) + result "int" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "addInteger" + quid "3659AF0D00EB" + parameters (list Parameters + (object Parameter "int i")) + result "int" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "FieldGen" + quid "3659AC6101C3" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3783462A0025" + supplier "Logical View::AccessFlags" + quidu "378345EC0044")) + operations (list Operations + (object Operation "getField" + quid "3659ACAE020A" + result "Field" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setInitValue" + quid "3659AF4200BF" + result "void" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "MethodGen" + quid "3659AC6A014E" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "378346310292" + supplier "Logical View::AccessFlags" + quidu "378345EC0044")) + operations (list Operations + (object Operation "addException" + quid "3659AFD703D0" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "Instruction" + quid "3659B1E8013C" + class_attributes (list class_attribute_list + (object ClassAttribute "tag" + quid "3659B221030A") + (object ClassAttribute "length" + quid "3659B24C00D1")) + language "Java") + (object Class "BranchInstruction" + quid "3659B29302BE" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B3CC01E2" + supplier "Logical View::Instruction" + quidu "3659B1E8013C")) + realized_interfaces (list realize_rel_list + (object Realize_Relationship + quid "3659B46B028B" + supplier "Logical View::InstructionTargeter" + quidu "3659B40603BC")) + language "Java") + (object Class "Select" + quid "3659B30602D8" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B3C5014C" + supplier "Logical View::BranchInstruction" + quidu "3659B29302BE")) + class_attributes (list class_attribute_list + (object ClassAttribute "targets" + quid "3659B3670056") + (object ClassAttribute "keys" + quid "3659B3740073")) + language "Java") + (object Class "LOOKUPSWITCH" + quid "3659B38B0315" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B3B503CA" + supplier "Logical View::Select" + quidu "3659B30602D8")) + language "Java") + (object Class "TABLESWITCH" + quid "3659B3A200BF" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B3BC013F" + supplier "Logical View::Select" + quidu "3659B30602D8")) + language "Java") + (object Class "InstructionTargeter" + quid "3659B40603BC" + stereotype "Interface" + operations (list Operations + (object Operation "updateTarget" + quid "3659B42302EB" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "CodeExceptionGen" + quid "3659B4D200E4" + realized_interfaces (list realize_rel_list + (object Realize_Relationship + quid "3659B54B016B" + supplier "Logical View::InstructionTargeter" + quidu "3659B40603BC")) + language "Java") + (object Class "IfInstruction" + quid "3659B617007E" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B63001F6" + supplier "Logical View::BranchInstruction" + quidu "3659B29302BE")) + language "Java") + (object Class "GOTO" + quid "3659B6220174" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B63700D4" + supplier "Logical View::BranchInstruction" + quidu "3659B29302BE")) + realized_interfaces (list realize_rel_list + (object Realize_Relationship + quid "365A91AE021A" + supplier "Logical View::UnconditionalBranch" + quidu "365A919F0395")) + language "Java") + (object Class "Type" + quid "3659B87D0135" + operations (list Operations + (object Operation "getSignature" + quid "3659B8FB00F0" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "BasicType" + quid "3659B90B02AB" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B99402DA" + supplier "Logical View::Type" + quidu "3659B87D0135")) + language "Java") + (object Class "ReferenceType" + quid "3659B91D0030" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B9990043" + supplier "Logical View::Type" + quidu "3659B87D0135")) + language "Java") + (object Class "ObjectType" + quid "3659B927039C" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B9B0028B" + supplier "Logical View::ReferenceType" + quidu "3659B91D0030")) + operations (list Operations + (object Operation "getClassName" + quid "3659B95401E8" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "ArrayType" + quid "3659B931024C" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "3659B9B30181" + supplier "Logical View::ReferenceType" + quidu "3659B91D0030")) + operations (list Operations + (object Operation "getDimensions" + quid "3659B979012D" + result "int" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "InstructionList" + quid "3659BAA803D2" + operations (list Operations + (object Operation "append" + quid "37834B1C0057" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + language "Java") + (object Class "LocalVariableGen" + quid "3659BC2A02C8" + realized_interfaces (list realize_rel_list + (object Realize_Relationship + quid "3659BC390248" + supplier "Logical View::InstructionTargeter" + quidu "3659B40603BC")) + language "Java") + (object Class "ReturnInstruction" + quid "365A9132032A" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98DC03CB" + supplier "Logical View::Instruction" + quidu "3659B1E8013C"))) + (object Class "ArrayInstruction" + quid "365A913A02DB" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98E5007B" + supplier "Logical View::Instruction" + quidu "3659B1E8013C"))) + (object Class "CPInstruction" + quid "365A91430360" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98BE016F" + supplier "Logical View::Instruction" + quidu "3659B1E8013C")) + operations (list Operations + (object Operation "getType" + quid "37836CEF008A" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + class_attributes (list class_attribute_list + (object ClassAttribute "index" + quid "365A926F02D6"))) + (object Class "StackInstruction" + quid "365A91560097" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365AB1A8029D" + supplier "Logical View::Instruction" + quidu "3659B1E8013C"))) + (object Class "ConversionInstruction" + quid "365A91690116" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98EA0295" + supplier "Logical View::Instruction" + quidu "3659B1E8013C"))) + (object Class "UnconditionalBranch" + quid "365A919F0395" + stereotype "Interface") + (object Class "ArithmeticInstruction" + quid "365A921A03E2" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98B0025F" + supplier "Logical View::Instruction" + quidu "3659B1E8013C"))) + (object Class "LocalVariableInstruction" + quid "365A926500FA" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "365A98B8008A" + supplier "Logical View::Instruction" + quidu "3659B1E8013C")) + class_attributes (list class_attribute_list + (object ClassAttribute "index" + quid "365A988E01E8"))) + (object Class "FieldInstruction" + quid "365A92F300CD" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "37836FAF0231" + supplier "Logical View::FieldOrMethod" + quidu "37836D4602A2")) + operations (list Operations + (object Operation "getFieldType" + quid "37836D250377" + result "Type" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "InvokeInstruction" + quid "365A931601C7" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "37836FB302A5" + supplier "Logical View::FieldOrMethod" + quidu "37836D4602A2")) + operations (list Operations + (object Operation "getArgumentTypes" + quid "37836D890190" + result "Type[]" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "AccessFlags" + quid "378345EC0044" + operations (list Operations + (object Operation "isPublic" + quid "378345EC0045" + result "boolean" + concurrency "Sequential" + opExportControl "Public" + uid 0)) + abstract TRUE) + (object Class "InstructionHandle" + quid "3783485F01C2") + (object Class "FieldOrMethod" + quid "37836D4602A2" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "37836E8702CC" + supplier "Logical View::CPInstruction" + quidu "365A91430360")) + operations (list Operations + (object Operation "getName" + quid "37836D5003D3" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "NEW" + quid "37836DE502D3" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "37836E5F03A1" + supplier "Logical View::CPInstruction" + quidu "365A91430360"))) + (object Class "INSTANCEOF" + quid "37836EC1013F" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "37836ED7023B" + supplier "Logical View::CPInstruction" + quidu "365A91430360"))) + (object Class "NewInterface" + quid "378370F400C6" + stereotype "Interface") + (object Association "$UNNAMED$0" + quid "3659BBA60048" + roles (list role_list + (object Role "$UNNAMED$1" + quid "3659BBA60250" + supplier "Logical View::ClassGen" + quidu "3659ABD700A2" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$2" + quid "3659BBA60264" + supplier "Logical View::ConstantPoolGen" + quidu "3659AC570165" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$3" + quid "3659BBC8024F" + roles (list role_list + (object Role "$UNNAMED$4" + quid "3659BBC803C2" + supplier "Logical View::ClassGen" + quidu "3659ABD700A2" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$5" + quid "3659BBC803CC" + supplier "Logical View::MethodGen" + quidu "3659AC6A014E" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$6" + quid "3659BBD40076" + roles (list role_list + (object Role "$UNNAMED$7" + quid "3659BBD402BB" + supplier "Logical View::ClassGen" + quidu "3659ABD700A2" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$8" + quid "3659BBD402CF" + supplier "Logical View::FieldGen" + quidu "3659AC6101C3" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$9" + quid "3659BCA400E3" + roles (list role_list + (object Role "$UNNAMED$10" + quid "3659BCA40292" + supplier "Logical View::MethodGen" + quidu "3659AC6A014E" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$11" + quid "3659BCA402A6" + supplier "Logical View::LocalVariableGen" + quidu "3659BC2A02C8" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$12" + quid "3659BCB20350" + roles (list role_list + (object Role "$UNNAMED$13" + quid "3659BCB3017B" + supplier "Logical View::MethodGen" + quidu "3659AC6A014E" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$14" + quid "3659BCB3018F" + supplier "Logical View::CodeExceptionGen" + quidu "3659B4D200E4" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$15" + quid "3659BDBE03D8" + roles (list role_list + (object Role "$UNNAMED$16" + quid "3659BDBF02FD" + supplier "Logical View::Type" + quidu "3659B87D0135" + is_navigable TRUE) + (object Role "$UNNAMED$17" + quid "3659BDBF0311" + supplier "Logical View::FieldGen" + quidu "3659AC6101C3" + is_navigable TRUE))) + (object Association "$UNNAMED$18" + quid "3659BDC7022C" + roles (list role_list + (object Role "$UNNAMED$19" + quid "3659BDC8030A" + supplier "Logical View::Type" + quidu "3659B87D0135" + is_navigable TRUE) + (object Role "$UNNAMED$20" + quid "3659BDC80314" + supplier "Logical View::MethodGen" + quidu "3659AC6A014E" + is_navigable TRUE))) + (object Association "$UNNAMED$21" + quid "365A9D0C02A0" + roles (list role_list + (object Role "$UNNAMED$22" + quid "365A9D0D008F" + supplier "Logical View::InstructionList" + quidu "3659BAA803D2" + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$23" + quid "365A9D0D0099" + supplier "Logical View::Instruction" + quidu "3659B1E8013C" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$24" + quid "37834AD601AB" + roles (list role_list + (object Role "$UNNAMED$25" + quid "37834AD60346" + supplier "Logical View::InstructionList" + quidu "3659BAA803D2" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$26" + quid "37834AD60347" + supplier "Logical View::InstructionHandle" + quidu "3783485F01C2" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$27" + quid "37834B0902D1" + roles (list role_list + (object Role "$UNNAMED$28" + quid "37834B0A0246" + supplier "Logical View::InstructionList" + quidu "3659BAA803D2" + is_navigable TRUE) + (object Role "$UNNAMED$29" + quid "37834B0A0250" + supplier "Logical View::MethodGen" + quidu "3659AC6A014E" + is_navigable TRUE))) + (object Association "$UNNAMED$30" + quid "37834B7A02FB" + roles (list role_list + (object Role "$UNNAMED$31" + quid "37834B7B0271" + supplier "Logical View::Instruction" + quidu "3659B1E8013C" + client_cardinality (value cardinality "1") + is_navigable TRUE) + (object Role "$UNNAMED$32" + quid "37834B7B028F" + supplier "Logical View::InstructionHandle" + quidu "3783485F01C2" + client_cardinality (value cardinality "1") + is_navigable TRUE))) + (object Association "$UNNAMED$33" + quid "37834BAE0382" + stereotype "targets" + roles (list role_list + (object Role "targets" + quid "37834BB001C3" + label "targets" + supplier "Logical View::InstructionHandle" + quidu "3783485F01C2" + client_cardinality (value cardinality "n") + is_navigable TRUE) + (object Role "$UNNAMED$34" + quid "37834BB001CD" + supplier "Logical View::InstructionTargeter" + quidu "3659B40603BC" + client_cardinality (value cardinality "n") + is_navigable TRUE))) + (object Association "$UNNAMED$35" + quid "37834DCC011F" + roles (list role_list + (object Role "$UNNAMED$36" + quid "37834DCC0300" + supplier "Logical View::ConstantPoolGen" + quidu "3659AC570165" + is_navigable TRUE) + (object Role "$UNNAMED$37" + quid "37834DCC030A" + supplier "Logical View::ClassGen" + quidu "3659ABD700A2" + is_navigable TRUE)))) + logical_presentations (list unit_reference_list + (object ClassDiagram "ClassGen" + quid "3659ABB6013B" + title "ClassGen" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list + (object ClassView "Class" "Logical View::BasicType" @1 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (352, 656) + label (object ItemLabel + Parent_View @1 + location (242, 605) + fill_color 13434879 + nlines 1 + max_width 220 + justify 0 + label "BasicType") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B90B02AB" + width 238 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ObjectType" @2 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (432, 384) + label (object ItemLabel + Parent_View @2 + location (260, 303) + fill_color 13434879 + nlines 1 + max_width 344 + justify 0 + label "ObjectType") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B927039C" + compartment (object Compartment + Parent_View @2 + location (260, 363) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 350) + width 362 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ArrayType" @3 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (880, 384) + label (object ItemLabel + Parent_View @3 + location (707, 303) + fill_color 13434879 + nlines 1 + max_width 346 + justify 0 + label "ArrayType") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B931024C" + compartment (object Compartment + Parent_View @3 + location (707, 363) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 353) + width 364 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ReferenceType" @4 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (688, 656) + label (object ItemLabel + Parent_View @4 + location (540, 605) + fill_color 13434879 + nlines 1 + max_width 296 + justify 0 + label "ReferenceType") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B91D0030" + width 314 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::FieldGen" @5 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1072, 800) + label (object ItemLabel + Parent_View @5 + location (927, 694) + fill_color 13434879 + nlines 1 + max_width 290 + justify 0 + label "FieldGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659AC6101C3" + compartment (object Compartment + Parent_View @5 + location (927, 754) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 3 + max_width 296) + width 308 + height 236 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::AccessFlags" @6 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1344, 384) + font (object Font + italics TRUE) + label (object ItemLabel + Parent_View @6 + location (1210, 306) + fill_color 13434879 + nlines 1 + max_width 268 + justify 0 + label "AccessFlags") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "378345EC0044" + compartment (object Compartment + Parent_View @6 + location (1210, 366) + font (object Font + italics TRUE) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 231) + width 286 + height 180 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @7 + location (1344, 602) + line_color 3342489 + fill_color 13434879 + supplier @6 + vertices (list Points + (1344, 602) + (1344, 474))) + (object InheritView "" @8 + stereotype TRUE + line_color 3342489 + quidu "3783462A0025" + client @5 + supplier @6 + line_style 3 + origin_attachment (1059, 682) + terminal_attachment (1059, 602) + drawSupplier @7) + (object InheritTreeView "" @9 + location (678, 500) + line_color 3342489 + fill_color 13434879 + supplier @4 + vertices (list Points + (678, 500) + (678, 593))) + (object InheritView "" @10 + stereotype TRUE + line_color 3342489 + quidu "3659B9B0028B" + client @2 + supplier @4 + line_style 3 + origin_attachment (369, 477) + terminal_attachment (406, 500) + drawSupplier @9) + (object InheritView "" @11 + stereotype TRUE + line_color 3342489 + quidu "3659B9B30181" + client @3 + supplier @4 + line_style 3 + origin_attachment (881, 477) + terminal_attachment (918, 500) + drawSupplier @9) + (object ClassView "Class" "Logical View::LocalVariableGen" @12 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (736, 1344) + label (object ItemLabel + Parent_View @12 + location (551, 1294) + fill_color 13434879 + nlines 1 + max_width 370 + justify 0 + label "LocalVariableGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659BC2A02C8" + width 388 + height 125 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::CodeExceptionGen" @13 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (736, 1168) + label (object ItemLabel + Parent_View @13 + location (546, 1117) + fill_color 13434879 + nlines 1 + max_width 380 + justify 0 + label "CodeExceptionGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B4D200E4" + width 398 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Type" @14 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (512, 928) + label (object ItemLabel + Parent_View @14 + location (359, 847) + fill_color 13434879 + nlines 1 + max_width 306 + justify 0 + label "Type") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B87D0135" + compartment (object Compartment + Parent_View @14 + location (359, 907) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 312) + width 324 + height 186 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @15 + location (512, 745) + line_color 3342489 + fill_color 13434879 + supplier @14 + vertices (list Points + (512, 745) + (512, 835))) + (object AssociationViewNew "$UNNAMED$15" @16 + location (795, 862) + stereotype TRUE + line_color 3342489 + quidu "3659BDBE03D8" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$16" @17 + Parent_View @16 + location (-869, -50) + stereotype TRUE + line_color 3342489 + quidu "3659BDBF02FD" + client @16 + supplier @14 + line_style 0) + (object RoleView "$UNNAMED$17" @18 + Parent_View @16 + location (-869, -50) + stereotype TRUE + line_color 3342489 + quidu "3659BDBF0311" + client @16 + supplier @5 + line_style 0))) + (object InheritView "" @19 + stereotype TRUE + line_color 3342489 + quidu "3659B99402DA" + client @1 + supplier @14 + line_style 3 + origin_attachment (347, 719) + terminal_attachment (347, 745) + drawSupplier @15) + (object InheritView "" @20 + stereotype TRUE + line_color 3342489 + quidu "3659B9990043" + client @4 + supplier @14 + line_style 3 + origin_attachment (669, 719) + terminal_attachment (669, 745) + drawSupplier @15) + (object ClassView "Class" "Logical View::MethodGen" @21 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1328, 1104) + label (object ItemLabel + Parent_View @21 + location (1165, 1023) + fill_color 13434879 + nlines 1 + max_width 326 + justify 0 + label "MethodGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659AC6A014E" + compartment (object Compartment + Parent_View @21 + location (1165, 1083) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 322) + width 344 + height 186 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$9" @22 + location (1022, 1227) + stereotype TRUE + line_color 3342489 + quidu "3659BCA400E3" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$10" @23 + Parent_View @22 + location (254, -597) + stereotype TRUE + line_color 3342489 + quidu "3659BCA40292" + client @22 + supplier @21 + line_style 0) + (object RoleView "$UNNAMED$11" @24 + Parent_View @22 + location (254, -597) + stereotype TRUE + line_color 3342489 + quidu "3659BCA402A6" + client @22 + supplier @12 + line_style 0 + label (object SegLabel @25 + Parent_View @24 + location (922, 1326) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object AssociationViewNew "$UNNAMED$12" @26 + location (1045, 1134) + stereotype TRUE + line_color 3342489 + quidu "3659BCB20350" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$13" @27 + Parent_View @26 + location (-235, -722) + stereotype TRUE + line_color 3342489 + quidu "3659BCB3017B" + client @26 + supplier @21 + line_style 0) + (object RoleView "$UNNAMED$14" @28 + Parent_View @26 + location (-235, -722) + stereotype TRUE + line_color 3342489 + quidu "3659BCB3018F" + client @26 + supplier @13 + line_style 0 + label (object SegLabel @29 + Parent_View @28 + location (942, 1092) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 1)))) + (object AssociationViewNew "$UNNAMED$18" @30 + location (914, 1014) + stereotype TRUE + line_color 3342489 + quidu "3659BDC7022C" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$19" @31 + Parent_View @30 + location (-1390, 6) + stereotype TRUE + line_color 3342489 + quidu "3659BDC8030A" + client @30 + supplier @14 + line_style 0) + (object RoleView "$UNNAMED$20" @32 + Parent_View @30 + location (-1390, 6) + stereotype TRUE + line_color 3342489 + quidu "3659BDC80314" + client @30 + supplier @21 + line_style 0))) + (object InheritView "" @33 + stereotype TRUE + line_color 3342489 + quidu "378346310292" + client @21 + supplier @6 + line_style 3 + origin_attachment (1344, 1011) + terminal_attachment (1344, 602) + drawSupplier @7) + (object ClassView "Class" "Logical View::BranchInstruction" @34 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (720, 1520) + label (object ItemLabel + Parent_View @34 + location (546, 1468) + fill_color 13434879 + nlines 1 + max_width 348 + justify 0 + label "BranchInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B29302BE" + width 366 + height 128 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::InstructionList" @35 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1904, 1104) + label (object ItemLabel + Parent_View @35 + location (1759, 1023) + fill_color 13434879 + nlines 1 + max_width 290 + justify 0 + label "InstructionList") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659BAA803D2" + compartment (object Compartment + Parent_View @35 + location (1759, 1083) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 215) + width 308 + height 186 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$27" @36 + location (1624, 1104) + stereotype TRUE + line_color 3342489 + quidu "37834B0902D1" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$28" @37 + Parent_View @36 + location (328, -64) + stereotype TRUE + line_color 3342489 + quidu "37834B0A0246" + client @36 + supplier @35 + line_style 0) + (object RoleView "$UNNAMED$29" @38 + Parent_View @36 + location (328, -64) + stereotype TRUE + line_color 3342489 + quidu "37834B0A0250" + client @36 + supplier @21 + line_style 0))) + (object ClassView "Class" "Logical View::Instruction" @39 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1312, 1408) + label (object ItemLabel + Parent_View @39 + location (1209, 1324) + fill_color 13434879 + nlines 1 + max_width 207 + justify 0 + label "Instruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B1E8013C" + compartment (object Compartment + Parent_View @39 + location (1209, 1384) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 3 + max_width 159) + width 225 + height 193 + annotation 8 + autoResize TRUE) + (object InheritView "" @40 + stereotype TRUE + line_color 3342489 + quidu "3659B3CC01E2" + client @34 + supplier @39 + line_style 0) + (object ClassView "Class" "Logical View::InstructionHandle" @41 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1904, 1408) + label (object ItemLabel + Parent_View @41 + location (1730, 1356) + fill_color 13434879 + nlines 1 + max_width 348 + justify 0 + label "InstructionHandle") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3783485F01C2" + width 366 + height 128 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$24" @42 + location (1904, 1270) + stereotype TRUE + line_color 3342489 + quidu "37834AD601AB" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$25" @43 + Parent_View @42 + location (48, -266) + stereotype TRUE + line_color 3342489 + quidu "37834AD60346" + client @42 + supplier @35 + line_style 0 + label (object SegLabel @44 + Parent_View @43 + location (1958, 1204) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$26" @45 + Parent_View @42 + location (48, -266) + stereotype TRUE + line_color 3342489 + quidu "37834AD60347" + client @42 + supplier @41 + line_style 0 + label (object SegLabel @46 + Parent_View @45 + location (1958, 1336) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 0)))) + (object AssociationViewNew "$UNNAMED$30" @47 + location (1572, 1408) + stereotype TRUE + line_color 3342489 + quidu "37834B7A02FB" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$31" @48 + Parent_View @47 + location (-332, 48) + stereotype TRUE + line_color 3342489 + quidu "37834B7B0271" + client @47 + supplier @39 + line_style 0 + label (object SegLabel @49 + Parent_View @48 + location (1440, 1462) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)) + (object RoleView "$UNNAMED$32" @50 + Parent_View @47 + location (-332, 48) + stereotype TRUE + line_color 3342489 + quidu "37834B7B028F" + client @47 + supplier @41 + line_style 0 + label (object SegLabel @51 + Parent_View @50 + location (1704, 1462) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)))) + (object ClassView "Class" "Logical View::InstructionTargeter" @52 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (192, 1344) + label (object ItemLabel + Parent_View @52 + location (8, 1285) + fill_color 13434879 + nlines 1 + max_width 368 + justify 0 + label "InstructionTargeter") + stereotype (object ItemLabel + Parent_View @52 + location (8, 1235) + fill_color 13434879 + anchor 10 + nlines 1 + max_width 368 + justify 0 + label "<>") + icon "Interface" + icon_style "Label" + line_color 3342489 + fill_color 13434879 + quidu "3659B40603BC" + compartment (object Compartment + Parent_View @52 + location (8, 1345) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 318) + width 386 + height 242 + annotation 8 + autoResize TRUE) + (object RealizeView "" @53 + stereotype TRUE + line_color 3342489 + quidu "3659B54B016B" + client @13 + supplier @52 + line_style 0) + (object RealizeView "" @54 + stereotype TRUE + line_color 3342489 + quidu "3659BC390248" + client @12 + supplier @52 + line_style 0) + (object AssociationViewNew "$UNNAMED$33" @55 + location (1043, 1616) + stereotype (object SegLabel @56 + Parent_View @55 + location (1296, 1579) + anchor 10 + anchor_loc 1 + nlines 1 + max_width 450 + justify 0 + label "<>" + pctDist 4.733333 + height 38 + orientation 0) + line_color 3342489 + quidu "37834BAE0382" + roleview_list (list RoleViews + (object RoleView "targets" @57 + Parent_View @55 + location (323, 96) + stereotype TRUE + line_color 3342489 + quidu "37834BB001C3" + client @55 + supplier @41 + vertices (list Points + (1043, 1616) + (1903, 1616) + (1903, 1472)) + line_style 0 + label (object SegLabel @58 + Parent_View @57 + location (1957, 1573) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$34" @59 + Parent_View @55 + location (323, 96) + stereotype TRUE + line_color 3342489 + quidu "37834BB001CD" + client @55 + supplier @52 + vertices (list Points + (1043, 1616) + (191, 1616) + (191, 1465)) + line_style 0 + label (object SegLabel @60 + Parent_View @59 + location (245, 1565) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "*" + pctDist 0.900000 + height 54 + orientation 1)))) + (object ClassView "Class" "Logical View::ConstantPoolGen" @61 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1888, 448) + label (object ItemLabel + Parent_View @61 + location (1715, 317) + fill_color 13434879 + nlines 1 + max_width 346 + justify 0 + label "ConstantPoolGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659AC570165" + compartment (object Compartment + Parent_View @61 + location (1715, 377) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 4 + max_width 343) + width 364 + height 286 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ClassGen" @62 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1632, 800) + label (object ItemLabel + Parent_View @62 + location (1483, 694) + fill_color 13434879 + nlines 1 + max_width 298 + justify 0 + label "ClassGen") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659ABD700A2" + compartment (object Compartment + Parent_View @62 + location (1483, 754) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 3 + max_width 303) + width 316 + height 236 + annotation 8 + autoResize TRUE) + (object InheritView "" @63 + stereotype TRUE + line_color 3342489 + quidu "3783462E016B" + client @62 + supplier @6 + line_style 3 + origin_attachment (1634, 682) + terminal_attachment (1634, 602) + drawSupplier @7) + (object AssociationViewNew "$UNNAMED$35" @64 + location (1751, 636) + stereotype TRUE + line_color 3342489 + quidu "37834DCC011F" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$36" @65 + Parent_View @64 + location (119, -164) + stereotype TRUE + line_color 3342489 + quidu "37834DCC0300" + client @64 + supplier @61 + line_style 0) + (object RoleView "$UNNAMED$37" @66 + Parent_View @64 + location (119, -164) + stereotype TRUE + line_color 3342489 + quidu "37834DCC030A" + client @64 + supplier @62 + line_style 0))) + (object RealizeView "" @67 + stereotype TRUE + line_color 3342489 + quidu "3659B46B028B" + client @34 + supplier @52 + line_style 0))) + (object ClassDiagram "Instructions" + quid "3659B32A024D" + title "Instructions" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 216 + origin_y 0 + items (list diagram_item_list + (object ClassView "Class" "Logical View::Instruction" @68 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1904, 176) + label (object ItemLabel + Parent_View @68 + location (1782, 91) + fill_color 13434879 + nlines 1 + max_width 244 + justify 0 + label "Instruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B1E8013C" + compartment (object Compartment + Parent_View @68 + location (1782, 151) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 3 + max_width 159) + width 262 + height 194 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::BranchInstruction" @69 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (912, 464) + label (object ItemLabel + Parent_View @69 + location (721, 414) + fill_color 13434879 + nlines 1 + max_width 382 + justify 0 + label "BranchInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B29302BE" + width 400 + height 125 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::Select" @70 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1120, 784) + label (object ItemLabel + Parent_View @70 + location (1026, 699) + fill_color 13434879 + nlines 1 + max_width 188 + justify 0 + label "Select") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B30602D8" + compartment (object Compartment + Parent_View @70 + location (1026, 759) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 3 + max_width 175) + width 206 + height 194 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::LOOKUPSWITCH" @71 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (912, 1072) + label (object ItemLabel + Parent_View @71 + location (732, 1021) + fill_color 13434879 + nlines 1 + max_width 360 + justify 0 + label "LOOKUPSWITCH") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B38B0315" + width 378 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::TABLESWITCH" @72 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1360, 1072) + label (object ItemLabel + Parent_View @72 + location (1202, 1021) + fill_color 13434879 + nlines 1 + max_width 316 + justify 0 + label "TABLESWITCH") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B3A200BF" + width 334 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::IfInstruction" @73 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (832, 752) + label (object ItemLabel + Parent_View @73 + location (711, 701) + fill_color 13434879 + nlines 1 + max_width 242 + justify 0 + label "IfInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B617007E" + width 260 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::GOTO" @74 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (576, 752) + label (object ItemLabel + Parent_View @74 + location (495, 701) + fill_color 13434879 + nlines 1 + max_width 162 + justify 0 + label "GOTO") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "3659B6220174" + height 126 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @75 + location (905, 618) + line_color 3342489 + fill_color 13434879 + supplier @69 + vertices (list Points + (905, 618) + (905, 526))) + (object InheritView "" @76 + stereotype TRUE + line_color 3342489 + quidu "3659B63700D4" + client @74 + supplier @69 + line_style 3 + origin_attachment (581, 689) + terminal_attachment (581, 618) + drawSupplier @75) + (object ClassView "Class" "Logical View::ReturnInstruction" @77 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2464, 208) + label (object ItemLabel + Parent_View @77 + location (2292, 157) + fill_color 13434879 + nlines 1 + max_width 344 + justify 0 + label "ReturnInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A9132032A" + width 362 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ArrayInstruction" @78 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1408, 464) + label (object ItemLabel + Parent_View @78 + location (1252, 413) + fill_color 13434879 + nlines 1 + max_width 312 + justify 0 + label "ArrayInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A913A02DB" + width 330 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::CPInstruction" @79 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2256, 528) + label (object ItemLabel + Parent_View @79 + location (2120, 422) + fill_color 13434879 + nlines 1 + max_width 272 + justify 0 + label "CPInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A91430360" + compartment (object Compartment + Parent_View @79 + location (2120, 482) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 3 + max_width 219) + width 290 + height 236 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::StackInstruction" @80 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1456, 208) + label (object ItemLabel + Parent_View @80 + location (1294, 157) + fill_color 13434879 + nlines 1 + max_width 324 + justify 0 + label "StackInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A91560097" + width 342 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::ConversionInstruction" @81 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1840, 464) + label (object ItemLabel + Parent_View @81 + location (1634, 413) + fill_color 13434879 + nlines 1 + max_width 412 + justify 0 + label "ConversionInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A91690116" + width 430 + height 126 + annotation 8 + autoResize TRUE) + (object InheritView "" @82 + stereotype TRUE + line_color 3342489 + quidu "3659B63001F6" + client @73 + supplier @69 + line_style 3 + origin_attachment (837, 689) + terminal_attachment (837, 618) + drawSupplier @75) + (object ClassView "Class" "Logical View::ArithmeticInstruction" @83 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (976, 208) + label (object ItemLabel + Parent_View @83 + location (775, 157) + fill_color 13434879 + nlines 1 + max_width 402 + justify 0 + label "ArithmeticInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A921A03E2" + width 420 + height 126 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::LocalVariableInstruction" @84 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2688, 496) + label (object ItemLabel + Parent_View @84 + location (2454, 415) + fill_color 13434879 + nlines 1 + max_width 468 + justify 0 + label "LocalVariableInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A926500FA" + compartment (object Compartment + Parent_View @84 + location (2454, 475) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 147) + width 486 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::FieldInstruction" @85 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1888, 1168) + label (object ItemLabel + Parent_View @85 + location (1733, 1087) + fill_color 13434879 + nlines 1 + max_width 310 + justify 0 + label "FieldInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A92F300CD" + compartment (object Compartment + Parent_View @85 + location (1733, 1147) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 306) + width 328 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::InvokeInstruction" @86 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2368, 1168) + label (object ItemLabel + Parent_View @86 + location (2158, 1087) + fill_color 13434879 + nlines 1 + max_width 420 + justify 0 + label "InvokeInstruction") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "365A931601C7" + compartment (object Compartment + Parent_View @86 + location (2158, 1147) + icon_style "Icon" + fill_color 16777215 + anchor 2 + nlines 2 + max_width 416) + width 438 + height 186 + annotation 8 + autoResize TRUE) + (object InheritTreeView "" @87 + location (1908, 363) + line_color 3342489 + fill_color 13434879 + supplier @68 + vertices (list Points + (1908, 363) + (1908, 273))) + (object InheritView "" @88 + stereotype TRUE + line_color 3342489 + quidu "365A98B8008A" + client @84 + supplier @68 + line_style 3 + origin_attachment (2691, 403) + terminal_attachment (2691, 363) + drawSupplier @87) + (object InheritView "" @89 + stereotype TRUE + line_color 3342489 + quidu "365A98BE016F" + client @79 + supplier @68 + line_style 3 + origin_attachment (2263, 410) + terminal_attachment (2263, 363) + drawSupplier @87) + (object InheritTreeView "" @90 + location (1113, 971) + line_color 3342489 + fill_color 13434879 + supplier @70 + vertices (list Points + (1113, 971) + (1113, 881))) + (object InheritView "" @91 + stereotype TRUE + line_color 3342489 + quidu "3659B3B503CA" + client @71 + supplier @70 + line_style 3 + origin_attachment (913, 1009) + terminal_attachment (913, 971) + drawSupplier @90) + (object InheritView "" @92 + stereotype TRUE + line_color 3342489 + quidu "365A98E5007B" + client @78 + supplier @68 + line_style 3 + origin_attachment (1383, 401) + terminal_attachment (1383, 363) + drawSupplier @87) + (object InheritView "" @93 + stereotype TRUE + line_color 3342489 + quidu "365A98B0025F" + client @83 + supplier @68 + line_style 3 + origin_attachment (981, 271) + terminal_attachment (981, 363) + drawSupplier @87) + (object InheritView "" @94 + stereotype TRUE + line_color 3342489 + quidu "365A98EA0295" + client @81 + supplier @68 + line_style 3 + origin_attachment (1843, 401) + terminal_attachment (1843, 363) + drawSupplier @87) + (object InheritView "" @95 + stereotype TRUE + line_color 3342489 + quidu "365A98DC03CB" + client @77 + supplier @68 + line_style 3 + origin_attachment (2459, 271) + terminal_attachment (2459, 363) + drawSupplier @87) + (object InheritView "" @96 + stereotype TRUE + line_color 3342489 + quidu "365AB1A8029D" + client @80 + supplier @68 + line_style 3 + origin_attachment (1445, 271) + terminal_attachment (1445, 363) + drawSupplier @87) + (object ClassView "Class" "Logical View::FieldOrMethod" @97 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2080, 864) + label (object ItemLabel + Parent_View @97 + location (1934, 783) + fill_color 13434879 + nlines 1 + max_width 292 + justify 0 + label "FieldOrMethod") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "37836D4602A2" + compartment (object Compartment + Parent_View @97 + location (1934, 843) + icon_style "Icon" + fill_color 13434879 + anchor 2 + nlines 2 + max_width 237) + width 310 + height 186 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::NEW" @98 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2816, 848) + label (object ItemLabel + Parent_View @98 + location (2709, 797) + fill_color 13434879 + nlines 1 + max_width 214 + justify 0 + label "NEW") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "37836DE502D3" + width 232 + height 126 + annotation 8 + autoResize TRUE) + (object InheritView "" @99 + stereotype TRUE + line_color 3342489 + quidu "3659B3CC01E2" + client @69 + supplier @68 + line_style 3 + origin_attachment (871, 402) + terminal_attachment (871, 363) + drawSupplier @87) + (object InheritTreeView "" @100 + location (2256, 736) + line_color 3342489 + fill_color 13434879 + supplier @79 + vertices (list Points + (2256, 736) + (2256, 646))) + (object ClassView "Class" "Logical View::INSTANCEOF" @101 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2496, 848) + label (object ItemLabel + Parent_View @101 + location (2349, 797) + fill_color 13434879 + nlines 1 + max_width 294 + justify 0 + label "INSTANCEOF") + icon_style "Icon" + line_color 3342489 + fill_color 13434879 + quidu "37836EC1013F" + width 312 + height 126 + annotation 8 + autoResize TRUE) + (object InheritView "" @102 + stereotype TRUE + line_color 3342489 + quidu "37836ED7023B" + client @101 + supplier @79 + line_style 3 + origin_attachment (2496, 785) + terminal_attachment (2496, 736) + drawSupplier @100) + (object InheritView "" @103 + stereotype TRUE + line_color 3342489 + quidu "37836E5F03A1" + client @98 + supplier @79 + line_style 3 + origin_attachment (2787, 785) + terminal_attachment (2787, 736) + drawSupplier @100) + (object InheritView "" @104 + stereotype TRUE + line_color 3342489 + quidu "37836E8702CC" + client @97 + supplier @79 + line_style 3 + origin_attachment (2054, 771) + terminal_attachment (2054, 736) + drawSupplier @100) + (object InheritView "" @105 + stereotype TRUE + line_color 3342489 + quidu "3659B3BC013F" + client @72 + supplier @70 + line_style 3 + origin_attachment (1325, 1009) + terminal_attachment (1325, 971) + drawSupplier @90) + (object InheritTreeView "" @106 + location (2079, 1047) + line_color 3342489 + fill_color 13434879 + supplier @97 + vertices (list Points + (2079, 1047) + (2079, 957))) + (object InheritView "" @107 + stereotype TRUE + line_color 3342489 + quidu "37836FB302A5" + client @86 + supplier @97 + line_style 3 + origin_attachment (2363, 1075) + terminal_attachment (2363, 1047) + drawSupplier @106) + (object InheritView "" @108 + stereotype TRUE + line_color 3342489 + quidu "37836FAF0231" + client @85 + supplier @97 + line_style 3 + origin_attachment (1873, 1075) + terminal_attachment (1873, 1047) + drawSupplier @106) + (object InheritView "" @109 + stereotype TRUE + line_color 3342489 + quidu "3659B3C5014C" + client @70 + supplier @69 + line_style 3 + origin_attachment (1128, 687) + terminal_attachment (1128, 618) + drawSupplier @75))))) + root_subsystem (object SubSystem "Component View" + quid "3659ABB2006D" + physical_models (list unit_reference_list + (object module "ClassGen" "NotAModuleType" "NotAModulePart" + quid "3659AD9C02CB" + stereotype "" + language "Java")) + physical_presentations (list unit_reference_list + (object Module_Diagram "Main" + quid "3659ABB600FF" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + process_structure (object Processes + quid "3659ABB2006E" + ProcsNDevs (list + (object Process_Diagram "Deployment View" + quid "3659ABB20077" + title "Deployment View" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + properties (object Properties + attributes (list Attribute_Set + (object Attribute + tool "DDL" + name "propertyId" + value "809135966") + (object Attribute + tool "DDL" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "DataBase" + value ("DataBaseSet" 800)) + (object Attribute + tool "DDL" + name "DataBaseSet" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "ANSI" + value 800) + (object Attribute + tool "DDL" + name "Oracle" + value 801) + (object Attribute + tool "DDL" + name "SQLServer" + value 802) + (object Attribute + tool "DDL" + name "Sybase" + value 803) + (object Attribute + tool "DDL" + name "Watcom" + value 804))) + (object Attribute + tool "DDL" + name "PrimaryKeyColumnName" + value "Id") + (object Attribute + tool "DDL" + name "PrimaryKeyColumnType" + value "NUMBER(5)") + (object Attribute + tool "DDL" + name "ViewName" + value "V_") + (object Attribute + tool "DDL" + name "TableName" + value "T_") + (object Attribute + tool "DDL" + name "InheritSuffix" + value "_V") + (object Attribute + tool "DDL" + name "DropClause" + value FALSE) + (object Attribute + tool "DDL" + name "BaseViews" + value FALSE) + (object Attribute + tool "DDL" + name "DDLScriptFilename" + value "DDL1.SQL"))) + (object Attribute + tool "DDL" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "ColumnType" + value "VARCHAR") + (object Attribute + tool "DDL" + name "Length" + value "") + (object Attribute + tool "DDL" + name "NullsOK" + value TRUE) + (object Attribute + tool "DDL" + name "PrimaryKey" + value FALSE) + (object Attribute + tool "DDL" + name "Unique" + value FALSE) + (object Attribute + tool "DDL" + name "CompositeUnique" + value FALSE) + (object Attribute + tool "DDL" + name "CheckConstraint" + value ""))) + (object Attribute + tool "DDL" + name "HiddenTool" + value FALSE) + (object Attribute + tool "IDL" + name "propertyId" + value "809135966") + (object Attribute + tool "IDL" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "IDL" + name "StopOnError" + value TRUE) + (object Attribute + tool "IDL" + name "Directory" + value "AUTO GENERATE") + (object Attribute + tool "IDL" + name "GeneratePreserveRegions" + value TRUE))) + (object Attribute + tool "IDL" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "ImplementationType" + value "") + (object Attribute + tool "IDL" + name "ConstValue" + value "") + (object Attribute + tool "IDL" + name "GenerateDefaultSpecifier" + value FALSE) + (object Attribute + tool "IDL" + name "DefaultSpecifier" + value "") + (object Attribute + tool "IDL" + name "IDLElement" + value TRUE) + (object Attribute + tool "IDL" + name "IDLSpecificationType" + value ("IDLSpecSet" 22)) + (object Attribute + tool "IDL" + name "IDLSpecSet" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "Interface" + value 22) + (object Attribute + tool "IDL" + name "Typedef" + value 54) + (object Attribute + tool "IDL" + name "Enumeration" + value 8) + (object Attribute + tool "IDL" + name "Const" + value 71) + (object Attribute + tool "IDL" + name "Exception" + value 61) + (object Attribute + tool "IDL" + name "Struct" + value 51) + (object Attribute + tool "IDL" + name "Union" + value 81))))) + (object Attribute + tool "IDL" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "Generate" + value TRUE) + (object Attribute + tool "IDL" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "IDL" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "IDL" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "IDL" + name "GenerateIDLModule" + value FALSE) + (object Attribute + tool "IDL" + name "InclusionProtectionSymbol" + value "AUTO GENERATE") + (object Attribute + tool "IDL" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "IDL" + name "IncludeBySimpleName" + value FALSE))) + (object Attribute + tool "IDL" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "IDL" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "IDL" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "IDL" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "IDL" + name "IncludeBySimpleName" + value FALSE))) + (object Attribute + tool "IDL" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "OperationIsOneWay" + value FALSE) + (object Attribute + tool "IDL" + name "Context" + value "") + (object Attribute + tool "IDL" + name "Raises" + value ""))) + (object Attribute + tool "IDL" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "CaseSpecifier" + value "") + (object Attribute + tool "IDL" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "IDL" + name "DataMemberName" + value "$relationship") + (object Attribute + tool "IDL" + name "IsReadOnly" + value FALSE) + (object Attribute + tool "IDL" + name "IsConst" + value FALSE) + (object Attribute + tool "IDL" + name "ConstValue" + value ""))) + (object Attribute + tool "IDL" + name "default__Has" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "NameIfUnlabeled" + value "the_$supplier") + (object Attribute + tool "IDL" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "IDL" + name "DataMemberName" + value "$relationship") + (object Attribute + tool "IDL" + name "GenerateForwardReference" + value FALSE) + (object Attribute + tool "IDL" + name "IsReadOnly" + value FALSE) + (object Attribute + tool "IDL" + name "BoundedHasRelType" + value ("HasRelTypeSet" 47)) + (object Attribute + tool "IDL" + name "HasRelTypeSet" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "Array" + value 24) + (object Attribute + tool "IDL" + name "Sequence" + value 47))))) + (object Attribute + tool "IDL" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "NameIfUnlabeled" + value "the_$supplier") + (object Attribute + tool "IDL" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "IDL" + name "DataMemberName" + value "$relationship") + (object Attribute + tool "IDL" + name "GenerateForwardReference" + value FALSE) + (object Attribute + tool "IDL" + name "IsReadOnly" + value FALSE) + (object Attribute + tool "IDL" + name "BoundedRoleType" + value ("AssocTypeSet" 47)) + (object Attribute + tool "IDL" + name "AssocTypeSet" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "Array" + value 24) + (object Attribute + tool "IDL" + name "Sequence" + value 47))))) + (object Attribute + tool "IDL" + name "default__Uses" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "GenerateForwardReference" + value FALSE))) + (object Attribute + tool "IDL" + name "default__Subsystem" + value (list Attribute_Set + (object Attribute + tool "IDL" + name "Directory" + value "AUTO GENERATE"))) + (object Attribute + tool "IDL" + name "HiddenTool" + value FALSE) + (object Attribute + tool "Java" + name "propertyId" + value "809135966") + (object Attribute + tool "Java" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "Java" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "Java" + name "StopOnError" + value FALSE) + (object Attribute + tool "Java" + name "Directory" + value "AUTO GENERATE") + (object Attribute + tool "Java" + name "UsePrefixes" + value FALSE) + (object Attribute + tool "Java" + name "InstanceVariablePrefix" + value "m_") + (object Attribute + tool "Java" + name "ClassVariablePrefix" + value "s_") + (object Attribute + tool "Java" + name "DefaultAttributeDataType" + value "int") + (object Attribute + tool "Java" + name "DefaultOperationReturnType" + value "void"))) + (object Attribute + tool "Java" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "GenerateDefaultConstructor" + value TRUE) + (object Attribute + tool "Java" + name "ConstructorIs" + value ("Ctor_Set" 62)) + (object Attribute + tool "Java" + name "Ctor_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Public" + value 62) + (object Attribute + tool "Java" + name "Protected" + value 63) + (object Attribute + tool "Java" + name "Private" + value 64))) + (object Attribute + tool "Java" + name "GenerateFinalizer" + value FALSE) + (object Attribute + tool "Java" + name "GenerateStaticInitializer" + value FALSE) + (object Attribute + tool "Java" + name "GenerateInstanceInitializer" + value FALSE))) + (object Attribute + tool "Java" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Generate" + value TRUE) + (object Attribute + tool "Java" + name "CmIdentification" + value (value Text "")) + (object Attribute + tool "Java" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Java" + name "AdditionalImports" + value (value Text "")))) + (object Attribute + tool "Java" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Generate" + value TRUE) + (object Attribute + tool "Java" + name "CmIdentification" + value (value Text "")) + (object Attribute + tool "Java" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Java" + name "AdditionalImports" + value (value Text "")))) + (object Attribute + tool "Java" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Abstract" + value FALSE) + (object Attribute + tool "Java" + name "Static" + value FALSE) + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Native" + value FALSE) + (object Attribute + tool "Java" + name "Synchronized" + value FALSE))) + (object Attribute + tool "Java" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "Java" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Transient" + value FALSE) + (object Attribute + tool "Java" + name "Volatile" + value FALSE))) + (object Attribute + tool "Java" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "Java" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "Java" + name "ContainerClass" + value "") + (object Attribute + tool "Java" + name "InitialValue" + value "") + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Transient" + value FALSE) + (object Attribute + tool "Java" + name "Volatile" + value FALSE))) + (object Attribute + tool "Java" + name "HiddenTool" + value FALSE) + (object Attribute + tool "SCC" + name "HiddenTool" + value FALSE)) + quid "3659ABB2006F")) diff --git a/docs/manual.bib b/docs/manual.bib new file mode 100644 index 00000000..57baa038 --- /dev/null +++ b/docs/manual.bib @@ -0,0 +1,185 @@ +@InProceedings{ada, + author = {Tucker Taft}, + title = {\protect{Programming the Internet in Ada95}}, + booktitle = {Proceedings Ada-Europe International Conference on + Reliable Software Technologies}, + year = {1996} +} + +@InProceedings{agesen, + author = {O. Agesen and S. N. Freund and J. C. Mitchell}, + title = {\protect{Adding Type Parameterization to the Java + Language}}, + booktitle = {Proceedings OOPSLA'97}, + year = {1997}, + address = {Atlanta, GA} +} + +@TechReport{aspect, + author = {Gregor Kiczales and John Lamping and Anurag + Mendhekar and Chris Maeda and Cristina Lopes and + Jean-Marc Loingtier and John Irwin}, + title = {\protect{Aspect-Oriented Programming}}, + institution = {Xerox Palo Alto Research Center}, + year = {1997}, + key = {SPL97-008 P9710042} +} + +@TechReport{barat, + author = {B. Bokowski and A. Spiegel}, + title = {\protect{Barat -- A Front-End for Java}}, + institution = {Freie Universit\"at Berlin}, + year = {1998}, + key = {B-98-09} +} + +@InProceedings{bca, + author = {Ralph Keller and Urs H{\"o}lzle}, + title = {\protect{Binary Component Adaptation}}, + booktitle = {Proceedings ECOOP'98}, + publisher = {Springer}, + editor = {Eric Jul}, + year = {1998} +} + +@InProceedings{bit, + author = {Han Bok Lee and Benjamin G. Zorn}, + title = {\protect{BIT: A Tool for Instrumenting Java + Bytecodes}}, + booktitle = {Proceedings USENIX Symposium on Internet + Technologies and Systems}, + year = {1998} +} + +@Manual{classfile, + title = {The classfile API}, + author = {Shawn Silverman}, + organization = {University of Manitoba}, + address = {\url{http://Meurrens.ML.org/ip-Links/java/codeEngineering/viewers.html}}, + year = {1998} +} + +@Manual{classfilters, + title = {The ClassFilters package}, + author = {Pascal Costanza}, + organization = {Universit{\"a}t Bonn}, + address = {\url{http://www.cs.uni-bonn.de/~costanza/ClassFilters/}}, + year = {1998} +} + +@InProceedings{classloader, + author = {Sheng Lian and Gilad Bracha}, + title = {\protect{Dynamic Class Loading in the Java Virtual + Machine}}, + booktitle = {Proceedings OOPSLA'98}, + year = {1998} +} + +@Book{design, + author = {E. Gamma and R. Helm and R. Johnson and + J. Vlissides}, + title = {Design Patterns: Elements of Reusable + Object-Oriented Software}, + publisher = {Addison-Wesley}, + year = {1995} +} + +@InProceedings{eiffel, + author = {Suzanne Collin and Dominique Colnet and Olivier + Zendra}, + title = {\protect{Type Inference for Late Binding. The + SmallEiffel Compiler}}, + booktitle = {Proceedings JMLC'97}, + year = {1997} +} + +@Book{gosling, + author = {J. Gosling and B. Joy and G. Steele}, + title = {The Java Language Specification}, + publisher = {Addison-Wesley}, + year = {1996} +} + +@Manual{inside, + title = {Inside Java Class Files}, + author = {Matt T. Yourst}, + organization = {Laserstars Technologies}, + address = + {\url{http://www.laserstars.com/articles/ddj/insidejcf/}}, + year = {1998} +} + +@Book{jasmin, + author = {J. Meyer and T. Downing}, + title = {Java Virtual Machine}, + publisher = {O'Reilly}, + year = {1997} +} + +@InProceedings{jawa, + author = {C. Fischer and D. Meemken}, + title = {\protect{JaWa: Java with Assertions}}, + editor = {Clemens Cap}, + booktitle = {Proceedings JIT'98}, + publisher = {Springer}, + year = {1998} +} + +@InProceedings{joie, + author = {Geoff Cohen and Jeff Chase and David Kaminsky}, + title = {\protect{Automatic Program Transformation with + JOIE}}, + booktitle = {Proceedings USENIX Annual Technical Symposium}, + year = {1998} +} + +@Book{jvm, + author = {Tim Lindholm and Frank Yellin}, + title = {The Java Virtual Machine Specification}, + publisher = {Addison-Wesley}, + year = {1997} +} + +@InProceedings{myers, + author = {A.C. Myers and J. A. Bank and B. Liskov}, + title = {\protect{Parameterized Types for Java}}, + booktitle = {Proceedings POPL'97}, + year = {1997}, + address = {Paris, France} +} + +@InProceedings{pmg, + author = {B. Bokowski and M. Dahm}, + title = {\protect{Poor Man's Genericity for Java}}, + publisher = {Springer}, + editor = {Clemens Cap}, + booktitle = {Proceedings JIT'98}, + year = {1998} +} + +@Manual{reflection, + title = {Reflection API}, + author = {JavaSoft}, + address = {\url{http://java.sun.com/products/jdk/1.1/docs/guide/reflection/}}, + year = {1998} +} + +@InProceedings{statistic, + author = {D. Antonioli and M. Pilz}, + title = {\protect{Statistische Analyse von Java-Classfiles}}, + publisher = {Springer}, + editor = {Clemens Cap}, + booktitle = {Proceedings JIT'98}, + year = {1998} +} + +@InProceedings{thies, + author = {M. Thies and U. Kastens}, + title = {\protect{Statische Analyse von Bibliotheken als + Grundlage dynamischer Optimierung}}, + publisher = {Springer}, + editor = {Clemens Cap}, + booktitle = {Proceedings JIT'98}, + year = {1998}, +} + diff --git a/docs/manual.ps b/docs/manual.ps new file mode 100644 index 00000000..c6024074 --- /dev/null +++ b/docs/manual.ps @@ -0,0 +1,4988 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: manual.dvi +%%Pages: 31 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: Palatino-Roman Palatino-Bold Courier Palatino-Italic +%%+ Helvetica Helvetica-Oblique Courier-Bold +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: /usr/bin/dvips manual.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2001.10.08:1345 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: 8r.enc +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", +% version = "0.6", +% date = "22 June 1996", +% filename = "8r.enc", +% email = "kb@@mail.tug.org", +% address = "135 Center Hill Rd. // Plymouth, MA 02360", +% codetable = "ISO/ASCII", +% checksum = "119 662 4424", +% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." +% @} +% +% Idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard Encoding + ISO Latin 1 + extra characters from Lucida. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% +% (4) Remaining positions left undefined are for use in (hopefully) +% upward-compatible revisions, if someday more characters are generally +% available. +% +% (5) hyphen appears twice for compatibility with both ASCII and Windows. +% +/TeXBase1Encoding [ +% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef + /breve /minus /.notdef +% These are the only two remaining unencoded characters, so may as +% well include them. + /Zcaron /zcaron +% 0x10 + /caron /dotlessi +% (unusual TeX characters available in, e.g., Lucida Bright) + /dotlessj /ff /ffi /ffl + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + % very contentious; it's so painful not having quoteleft and quoteright + % at 96 and 145 that we move the things normally found there down to here. + /grave /quotesingle +% 0x20 (ASCII begins) + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three /four /five /six /seven + /eight /nine /colon /semicolon /less /equal /greater /question +% 0x40 + /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O +% 0x50 + /P /Q /R /S /T /U /V /W + /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o +% 0x70 + /p /q /r /s /t /u /v /w + /x /y /z /braceleft /bar /braceright /asciitilde + /.notdef % rubout; ASCII ends +% 0x80 + /.notdef /.notdef /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /.notdef /.notdef /.notdef +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /.notdef /.notdef /Ydieresis +% 0xA0 + /.notdef % nobreakspace + /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot + /hyphen % Y&Y (also at 45); Windows' softhyphen + /registered + /macron +% 0xD0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +TeXDict begin 39158280 55380996 1000 600 600 (manual.dvi) +@start /Fa 145[60 60 3[60 3[60 3[60 97[{TeXBase1Encoding ReEncodeFont}5 +99.6264 /Courier-Bold rf +%DVIPSBitmapFont: Fb cmr8 8 1 +/Fb 1 44 df43 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc cmr10 10.95 1 +/Fc 1 62 df<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167B +A147>61 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmsy10 10.95 1 +/Fd 1 55 df<176017F01601A2EE03E0A2EE07C0A2EE0F80A2EE1F00A2163EA25EA25EA2 +4B5AA24B5AA24B5AA24B5AA24BC7FCA2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24A +C8FCA2143EA25CA25CA2495AA2495AA2495AA2495AA249C9FCA2133EA25BA25BA2485AA2 +485AA2485AA2485AA248CAFCA2123EA25AA25AA25A12602C5473C000>54 +D E +%EndDVIPSBitmapFont +/Fe 179[51 6[61 1[66 61 66[{TeXBase1Encoding ReEncodeFont}4 +90.9091 /Helvetica rf /Ff 103[55 26[55 55 55 55 55 55 +55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +55 55 55 55 55 55 55 1[55 1[55 3[55 55 55 55 55 55 55 +55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 1[55 +55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 +55 55 55 55 55 55 55 2[55 55 55 33[{TeXBase1Encoding ReEncodeFont}86 +90.9091 /Courier rf /Fg 107[50 25[50 55 50 83 55 61 33 +44 39 1[61 55 61 89 33 61 33 33 61 55 39 50 61 44 61 +50 12[66 61 2[61 83 1[100 61 2[39 83 83 55 61 83 72 1[78 +6[25 1[50 50 50 50 50 50 50 50 2[25 33 5[28 35[61 61 +2[{TeXBase1Encoding ReEncodeFont}54 99.6264 /Palatino-Bold +rf /Fh 134[60 60 60 60 60 60 60 60 60 60 60 60 60 60 +60 60 60 60 60 60 60 60 60 60 60 3[60 1[60 3[60 60 2[60 +60 1[60 60 60 60 60 2[60 60 1[60 60 1[60 60 60 5[60 8[60 +1[60 60 60 60 60 2[60 60 5[60 34[{TeXBase1Encoding ReEncodeFont}53 +99.6264 /Courier rf /Fi 135[50 50 50 1[50 50 50 1[50 +50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 38[50 10[50 +50 46[{TeXBase1Encoding ReEncodeFont}25 83.022 /Courier +rf /Fj 135[43 1[47 50 27 35 33 1[50 45 48 73 24 1[19 +24 48 46 1[40 51 37 46 42 12[51 18[65 18[21 28 21 44[{ +TeXBase1Encoding ReEncodeFont}25 83.022 /Palatino-Roman +rf /Fk 205[29 29 49[{TeXBase1Encoding ReEncodeFont}2 +58.1154 /Palatino-Roman rf /Fm 134[66 60 100 66 73 40 +53 47 1[73 66 73 106 40 73 40 40 73 1[47 60 73 53 1[60 +9[120 2[80 1[86 1[73 2[120 2[47 1[100 100 3[86 80 93 +10[60 60 60 60 60 60 2[30 43[73 2[{TeXBase1Encoding ReEncodeFont}41 +119.552 /Palatino-Bold rf /Fn 205[33 33 49[{ +TeXBase1Encoding ReEncodeFont}2 66.4176 /Palatino-Roman +rf /Fo 179[55 6[66 1[72 66 66[{TeXBase1Encoding ReEncodeFont}4 +99.6264 /Helvetica rf /Fp 134[50 2[50 55 33 39 39 1[50 +44 55 1[28 2[28 50 50 1[39 50 41 46 44 97[{ +TeXBase1Encoding ReEncodeFont}18 99.6264 /Palatino-Italic +rf /Fq 107[50 50 24[50 55 51 83 56 60 32 42 39 56 60 +54 58 88 29 55 23 29 58 55 33 48 61 44 55 50 3[33 1[33 +66 66 1[100 72 78 61 52 67 1[60 78 83 94 61 72 33 34 +83 76 55 61 77 71 61 78 6[25 50 50 50 50 50 50 50 50 +50 50 1[25 33 25 2[33 33 28 1[84 33[61 60 2[{ +TeXBase1Encoding ReEncodeFont}74 99.6264 /Palatino-Roman +rf /Fr 135[72 1[80 88 48 64 56 1[88 80 88 128 48 2[48 +88 1[56 72 88 64 1[72 10[112 1[96 1[104 1[88 2[143 88 +1[56 56 1[120 1[88 1[104 96 112 12[72 72 72 72 49[{ +TeXBase1Encoding ReEncodeFont}35 143.462 /Palatino-Bold +rf /Fs 134[45 45 66 45 51 30 35 35 1[45 40 51 71 25 40 +25 25 45 45 25 35 45 37 42 40 8[66 1[66 71 56 51 61 1[56 +71 71 86 51 1[30 30 2[51 56 71 61 1[66 6[23 45 45 45 +9[30 5[25 35[50 48 2[{TeXBase1Encoding ReEncodeFont}50 +90.9091 /Palatino-Italic rf /Ft 87[30 17[45 1[45 45 24[45 +51 47 76 51 55 30 39 36 51 55 50 53 80 26 51 21 26 53 +51 30 44 56 40 50 45 3[30 1[30 61 61 61 91 66 71 56 48 +61 1[55 71 76 86 56 66 30 31 76 69 51 56 70 64 56 71 +5[23 23 45 45 45 45 45 45 45 45 45 45 55 23 30 23 2[30 +30 25 35[55 55 2[{TeXBase1Encoding ReEncodeFont}78 90.9091 +/Palatino-Roman rf /Fu 139[39 1[47 2[65 9[57 1[53 66 +18[94 22[60 5[60 60 60 3[30 44[{TeXBase1Encoding ReEncodeFont}12 +119.552 /Palatino-Roman rf /Fv 138[72 1[72 72 3[72 72 +72 72 1[72 72 2[72 72 1[72 72 32[72 17[72 46[{ +TeXBase1Encoding ReEncodeFont}15 119.552 /Courier rf +/Fw 138[87 1[61 57 4[127 1[80 2[83 6[72 19[136 8[111 +68[{TeXBase1Encoding ReEncodeFont}9 143.462 /Palatino-Roman +rf /Fx 139[30 40 35 2[51 56 4[30 3[45 1[40 56 45 10[71 +20[71 15[45 45 1[23 46[{TeXBase1Encoding ReEncodeFont}15 +90.9091 /Palatino-Bold rf /Fy 134[96 3[104 56 73 68 1[103 +94 100 152 50 2[50 1[96 1[82 105 76 95 86 20[105 6[105 +133 122 105 24[57 57 40[{TeXBase1Encoding ReEncodeFont}24 +172.188 /Palatino-Roman rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: a4 +a4 +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 429 814 a Fy(Byte)44 b(Code)g(Engineering)g(Library)g(\(BCEL\)) +749 1021 y(Description)h(and)f(usage)f(manual)1685 1229 +y Fx(V)-10 b(ersion)23 b(1.0)1452 1528 y Fw(Markus)35 +b(Dahm)1159 1826 y Fv(markus.dahm@berlin.de)1507 2066 +y Fu(October)c(8,)f(2001)1738 2421 y Fx(Abstract)380 +2581 y Ft(Extensions)k(and)i(impr)n(ovements)f(of)h(the)g(pr)n +(ogramming)g(language)g(Java)h(and)f(its)g(r)n(e-)244 +2693 y(lated)26 b(execution)e(envir)n(onment)i(\(Java)i(V)-5 +b(irtual)26 b(Machine,)h(JVM\))g(ar)n(e)f(the)f(subject)g(of)h(a)h(lar) +n(ge)244 2806 y(number)f(of)h(r)n(esear)n(ch)f(pr)n(ojects)g(and)g(pr)n +(oposals.)39 b(Ther)n(e)25 b(ar)n(e)i(pr)n(ojects,)f(for)h(instance,)g +(to)f(add)244 2919 y(parameterized)17 b(types)e(to)i(Java,)j(to)d +(implement)g(\223Aspect-Oriented)f(Pr)n(ogramming\224,)j(to)d(per)n(-) +244 3032 y(form)23 b(sophisticated)e(static)i(analysis,)f(and)h(to)f +(impr)n(ove)h(the)f(r)o(un-time)h(performance.)380 3145 +y(Since)c(Java)i(classes)d(ar)n(e)i(compiled)f(into)f(portable)h +(binary)h(class)f(\002les)g(\(called)h Fs(byte)g(code)p +Ft(\),)h(it)244 3258 y(is)e(the)f(most)g(convenient)g(and)h +(platform-independent)e(way)i(to)f(implement)h(these)e(impr)n(ove-)244 +3371 y(ments)k(not)g(by)h(writing)g(a)g(new)f(compiler)i(or)e(changing) +h(the)f(JVM,)h(but)g(by)g(transforming)f(the)244 3484 +y(byte)j(code.)33 b(These)23 b(transformations)h(can)h(either)f(be)h +(performed)e(after)h(compile-time,)i(or)e(at)244 3597 +y(load-time.)44 b(Many)28 b(pr)n(ogrammers)f(ar)n(e)h(doing)f(this)h +(by)g(implementing)g(their)f(own)g(special-)244 3710 +y(ized)32 b(byte)e(code)h(manipulation)i(tools,)f(which)h(ar)n(e,)g +(however)-7 b(,)33 b(r)n(estricted)d(in)i(the)f(range)g(of)244 +3823 y(their)22 b(r)n(e-usability)-10 b(.)380 3935 y(T)i(o)27 +b(deal)h(with)g(the)f(necessary)f(class)i(\002le)g(transformations,)g +(we)f(intr)n(oduce)g(an)h(API)f(that)244 4048 y(helps)22 +b(developers)e(to)i(conveniently)g(implement)h(their)f +(transformations.)0 4392 y Fr(1)143 b(Introduction)0 +4620 y Fq(The)32 b(Java)g(language)g([GJS96])h(has)f(become)g(very)h +(popular)f(and)g(many)g(r)n(esear)n(ch)h(pr)n(ojects)h(deal)0 +4741 y(with)28 b(further)g(impr)n(ovements)h(of)e(the)h(language)f(or)h +(its)g(r)o(un-time)g(behavior)-7 b(.)38 b(The)27 b(possibility)i(to)0 +4861 y(extend)e(a)f(language)h(with)g(new)f(concepts)i(is)f(sur)n(ely)g +(a)g(desirable)f(featur)n(e,)h(but)h(implementation)0 +4981 y(issues)37 b(should)h(be)e(hidden)h(fr)n(om)g(the)g(user)-7 +b(.)67 b(Fortunately)-11 b(,)42 b(the)37 b(concepts)h(of)f(the)g(Java)g +(V)-5 b(irtual)0 5102 y(Machine)23 b(permit)g(the)g(user)n(-transpar)n +(ent)i(implementation)f(of)f(such)h(extensions)g(with)f(r)n(elatively)0 +5222 y(little)j(ef)n(fort.)146 5342 y(Because)20 b(the)h(tar)n(get)h +(language)f(of)g(Java)f(is)h(an)f(interpr)n(eted)h(language)g(with)g(a) +f(small)h(and)f(easy-)0 5463 y(to-understand)i(set)f(of)g(instr)o +(uctions)i(\(the)e Fp(byte)f(code)p Fq(\),)h(developers)g(can)g +(implement)f(and)g(test)h(their)1888 5712 y(1)p eop +%%Page: 2 2 +2 1 bop 0 407 a Fq(concepts)32 b(in)g(a)f(very)h(elegant)f(way)-11 +b(.)50 b(One)32 b(can)f(write)h(a)f(plug-in)h(r)n(eplacement)f(for)i +(the)e(system's)0 527 y(class)38 b(loader)g(which)g(is)g(r)n +(esponsible)h(for)g(dynamically)f(loading)g(class)g(\002les)h(at)f(r)o +(un-time)g(and)0 648 y(passing)30 b(the)h(byte)f(code)g(to)h(the)f(V)-5 +b(irtual)31 b(Machine)e(\(see)h(section)h(4.1\).)46 b(Class)30 +b(loaders)g(may)g(thus)0 768 y(be)f(used)f(to)i(inter)n(cept)g(the)f +(loading)g(pr)n(ocess)h(and)f(transform)i(classes)e(befor)n(e)g(they)h +(get)f(actually)0 888 y(executed)c(by)h(the)g(JVM)f([LB98].)31 +b(While)25 b(the)g(original)h(class)g(\002les)g(always)f(r)n(emain)g +(unalter)n(ed,)h(the)0 1009 y(behavior)32 b(of)g(the)f(class)h(loader)f +(may)g(be)g(r)n(econ\002gur)n(ed)i(for)f(every)g(execution)g(or)g +(instr)o(umented)0 1129 y(dynamically)-11 b(.)146 1249 +y(The)34 b Fo(BCEL)40 b Fq(API)33 b(\(Byte)i(Code)f(Engineering)h +(Library\),)i(formerly)f(known)f(as)f(JavaClass,)j(is)0 +1370 y(a)h(toolkit)i(for)e(the)g(static)h(analysis)g(and)e(dynamic)h +(cr)n(eation)h(or)g(transformation)h(of)f(Java)e(class)0 +1490 y(\002les.)70 b(It)37 b(enables)h(developers)g(to)g(implement)g +(the)g(desir)n(ed)g(featur)n(es)g(on)g(a)g(high)g(level)g(of)g(ab-)0 +1611 y(straction)30 b(without)g(handling)f(all)f(the)g(internal)h +(details)f(of)h(the)g(Java)f(class)h(\002le)g(format)g(and)f(thus)0 +1731 y(r)n(e-inventing)e(the)f(wheel)f(every)h(time.)31 +b Fo(BCEL)e Fq(is)24 b(written)i(entir)n(ely)g(in)e(Java)h(and)f(fr)n +(eely)h(available)0 1851 y(under)g(the)g(terms)h(of)f(the)g(Apache)f +(License.)1752 1815 y Fn(1)146 1972 y Fq(This)33 b(paper)f(is)g(str)o +(uctur)n(ed)i(as)f(follows:)46 b(W)-9 b(e)31 b(give)i(a)f(brief)g +(description)i(of)e(the)h(Java)f(V)-5 b(irtual)0 2092 +y(Machine)40 b(and)f(the)h(class)g(\002le)g(format)h(in)f(section)h(2.) +75 b(Section)41 b(3)e(intr)n(oduces)j(the)d Fo(BCEL)46 +b Fq(API.)0 2213 y(Section)28 b(4)e(describes)h(some)g(typical)g +(application)g(ar)n(eas)g(and)f(example)g(pr)n(ojects.)38 +b(The)26 b(appendix)0 2333 y(contains)k(code)f(examples)g(that)h(ar)n +(e)f(to)h(long)f(to)h(be)f(pr)n(esented)g(in)g(the)g(main)g(part)h(of)f +(this)h(paper)-7 b(.)0 2453 y(All)24 b(examples)h(ar)n(e)g(included)g +(in)g(the)g(down-loadable)g(distribution.)0 2749 y Fm(1.1)119 +b(Related)29 b(work)0 2939 y Fq(Ther)n(e)37 b(ar)n(e)g(a)g(number)g(of) +g(pr)n(oposals)i(and)d(class)i(libraries)f(that)h(have)f(some)g +(similarities)g(with)2 3059 y(B)t(C)t(E)t(L)r(:)28 b(The)e(JOIE)f +([CCK98)o(])h(toolkit)h(can)f(be)f(used)g(to)h(instr)o(ument)h(class)f +(loaders)g(with)g(dynamic)0 3180 y(behavior)-7 b(.)73 +b(Similarly)-11 b(,)43 b(\223Binary)c(Component)h(Adaptation\224)e +([KH98])i(allows)f(components)h(to)0 3300 y(be)30 b(adapted)g(and)h +(evolved)g(on-the-\003y)-11 b(.)48 b(Han)30 b(Lee's)g(\223Byte-code)i +(Instr)o(umenting)g(T)-9 b(ool\224)31 b([LZ98])0 3421 +y(allows)20 b(the)g(user)g(to)g(insert)g(calls)g(to)g(analysis)g +(methods)g(anywher)n(e)g(in)g(the)f(byte)h(code.)30 b(The)19 +b(Jasmin)0 3541 y(language)i([MD97])g(can)f(be)h(used)f(to)i +(hand-write)f(or)g(generate)g(pseudo-assembler)g(code.)30 +b(D-Java)0 3661 y([Sil98])25 b(and)g(JCF)g([Y)-9 b(ou98])25 +b(ar)n(e)g(class)h(viewing)f(tools.)146 3782 y(In)f(contrast)h(to)g +(these)f(pr)n(ojects,)h Fo(BCEL)j Fq(is)c(intended)f(to)i(be)e(a)h +(general)g(purpose)g(tool)h(for)g(\223byte)0 3902 y(code)31 +b(engineering\224.)48 b(It)30 b(gives)h(full)g(contr)n(ol)i(to)e(the)g +(developer)f(on)h(a)g(high)g(level)f(of)h(abstraction)0 +4022 y(and)25 b(is)g(not)g(r)n(estricted)i(to)f(any)f(particular)h +(application)f(ar)n(ea.)0 4363 y Fr(2)143 b(The)35 b(Java)g(V)-8 +b(irtual)34 b(Machine)0 4590 y Fq(Readers)f(alr)n(eady)h(familiar)g +(with)g(the)g(Java)g(V)-5 b(irtual)34 b(Machine)g(and)f(the)h(Java)g +(class)g(\002le)g(format)0 4711 y(may)25 b(want)g(to)h(skip)g(this)f +(section)h(and)f(pr)n(oceed)g(with)g(section)h(3.)146 +4831 y(Pr)n(ograms)34 b(written)g(in)e(the)g(Java)h(language)f(ar)n(e)h +(compiled)f(into)h(a)f(portable)h(binary)g(format)0 4951 +y(called)27 b Fp(byte)g(code)p Fq(.)38 b(Every)27 b(class)h(is)g(r)n +(epr)n(esented)g(by)f(a)h(single)f(class)h(\002le)f(containing)i(class) +f(r)n(elated)0 5072 y(data)g(and)f(byte)i(code)f(instr)o(uctions.)42 +b(These)27 b(\002les)h(ar)n(e)g(loaded)f(dynamically)i(into)f(an)g +(interpr)n(eter)0 5192 y(\(Java)d(V)-5 b(irtual)25 b(Machine,)g(JVM\))g +(and)g(executed.)p 0 5271 1530 4 v 116 5333 a Fk(1)149 +5363 y Fj(The)c(distribution)g(is)g(available)e(at)h +Fi(http://jakarta.apache.org/bcel/)p Fj(,)14 b(including)21 +b(several)f(code)g(ex-)0 5463 y(amples)h(and)f(javadoc)g(manuals.)1888 +5712 y Fq(2)p eop +%%Page: 3 3 +3 2 bop 146 407 a Fq(Figur)n(e)21 b(1)f(illustrates)i(the)e(pr)n +(ocedur)n(e)h(of)g(compiling)f(and)g(executing)h(a)f(Java)g(class:)29 +b(The)20 b(sour)n(ce)0 527 y(\002le)f(\()p Fh(HelloWorld.java)p +Fq(\))d(is)j(compiled)g(into)h(a)e(Java)i(class)f(\002le)g(\()p +Fh(HelloWorld.class)p Fq(\),)e(loaded)0 648 y(by)32 b(the)f(byte)h +(code)g(interpr)n(eter)g(and)f(executed.)51 b(In)30 b(or)n(der)j(to)f +(implement)f(additional)g(featur)n(es,)0 768 y(r)n(esear)n(chers)k(may) +e(want)h(to)g(transform)h(class)f(\002les)g(\(drawn)f(with)h(bold)g +(lines\))f(befor)n(e)h(they)g(get)0 888 y(actually)26 +b(executed.)31 b(This)25 b(application)g(ar)n(ea)g(is)g(one)g(of)h(the) +f(main)f(issues)i(of)f(this)h(article.)0 2794 y @beginspecial +0 @llx 0 @lly 439 @urx 199 @ury 4590 @rwi @setspecial +%%BeginDocument: eps/jvm.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: jvm.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Thu Nov 19 11:55:18 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 439 199 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-17.0 217.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 4612 m -1000 -1000 l 8588 -1000 l 8588 4612 l cp clip + 0.06000 0.06000 sc +/Courier ff 285.00 scf sf +6600 1575 m +gs 1 -1 sc (java) col0 sh gr +/Courier ff 285.00 scf sf +2550 1575 m +gs 1 -1 sc (javac) col0 sh gr +/Courier-Bold ff 150.00 scf sf +4290 1155 m +gs 1 -1 sc (08 1a 42 ...) col0 sh gr +/Courier-Bold ff 150.00 scf sf +4290 990 m +gs 1 -1 sc (ca fe ba be) col0 sh gr +% Polyline +7.500 slw +n 6405 1200 m 6300 1200 6300 1695 105 arcto 4 {pop} repeat + 6300 1800 7395 1800 105 arcto 4 {pop} repeat + 7500 1800 7500 1305 105 arcto 4 {pop} repeat + 7500 1200 6405 1200 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 2505 1200 m 2400 1200 2400 1695 105 arcto 4 {pop} repeat + 2400 1800 3495 1800 105 arcto 4 {pop} repeat + 3600 1800 3600 1305 105 arcto 4 {pop} repeat + 3600 1200 2505 1200 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +30.000 slw +gs clippath +2280 1470 m 2400 1500 l 2280 1530 l 2445 1530 l 2445 1470 l cp +clip +n 1800 1500 m 2400 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 2280 1470 m 2400 1500 l 2280 1530 l 2280 1500 l 2280 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +4080 1470 m 4200 1500 l 4080 1530 l 4245 1530 l 4245 1470 l cp +clip +n 3600 1500 m 4200 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 4080 1470 m 4200 1500 l 4080 1530 l 4080 1500 l 4080 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +6180 1470 m 6300 1500 l 6180 1530 l 6345 1530 l 6345 1470 l cp +clip +n 5700 1500 m 6300 1500 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 6180 1470 m 6300 1500 l 6180 1530 l 6180 1500 l 6180 1470 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +n 5415 615 m 5415 915 l 5715 915 l gs col0 s gr +% Polyline +n 4215 615 m 4215 2415 l 5715 2415 l 5715 915 l 5415 615 l 4215 615 l cp gs col0 s gr +% Polyline +gs clippath +7006 1136 m 6900 1200 l 6964 1094 l 6847 1211 l 6889 1253 l cp +clip +n 7500 600 m 6900 1200 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 7006 1136 m 6900 1200 l 6964 1094 l 6985 1115 l 7006 1136 l cp gs 0.00 setgray ef gr col0 s +% Polyline +30.000 slw +gs clippath +6630 1080 m 6600 1200 l 6570 1080 l 6570 1245 l 6630 1245 l cp +clip +n 6600 1200 m 6600 600 l gs col0 s gr gr + +% arrowhead +7.500 slw +n 6630 1080 m 6600 1200 l 6570 1080 l 6600 1080 l 6630 1080 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 300 3000 m 3600 3000 l 3600 3600 l 300 3600 l cp gs 0.90 setgray ef gr gs col0 s gr +% Polyline +n 4200 3000 m 7500 3000 l 7500 3600 l 4200 3600 l cp gs 0.90 setgray ef gr gs col0 s gr +% Polyline +n 1500 600 m 1500 900 l 1800 900 l gs col0 s gr +% Polyline +n 300 600 m 300 2400 l 1800 2400 l 1800 900 l 1500 600 l 300 600 l cp gs col0 s gr +/Helvetica ff 180.00 scf sf +6450 450 m +gs 1 -1 sc (Other classes) col0 sh gr +/Courier ff 150.00 scf sf +375 975 m +gs 1 -1 sc (public class) col0 sh gr +/Courier ff 150.00 scf sf +375 1140 m +gs 1 -1 sc (HelloWorld {) col0 sh gr +/Courier ff 150.00 scf sf +375 1305 m +gs 1 -1 sc ( ...) col0 sh gr +/Courier ff 150.00 scf sf +375 1635 m +gs 1 -1 sc ( void hello\(\) {) col0 sh gr +/Courier ff 150.00 scf sf +375 1800 m +gs 1 -1 sc ( ...) col0 sh gr +/Courier ff 150.00 scf sf +375 1965 m +gs 1 -1 sc ( }) col0 sh gr +/Courier ff 150.00 scf sf +375 2130 m +gs 1 -1 sc (}) col0 sh gr +/Helvetica ff 180.00 scf sf +4275 2625 m +gs 1 -1 sc (HelloWorld.class) col0 sh gr +/Helvetica-Bold ff 300.00 scf sf +900 3375 m +gs 1 -1 sc (Java language) col0 sh gr +/Helvetica-Bold ff 300.00 scf sf +4350 3375 m +gs 1 -1 sc (Java Virtual Machine) col0 sh gr +/Helvetica ff 180.00 scf sf +375 2625 m +gs 1 -1 sc (HelloWorld.java) col-1 sh gr +$F2psEnd +rs + +%%EndDocument + @endspecial 781 2998 a(Figur)n(e)g(1:)31 b(Compilation)25 +b(and)g(execution)h(of)f(Java)g(classes)146 3370 y(Note)e(that)g(the)f +(use)h(of)g(the)f(general)g(term)h(\223Java\224)f(implies)g(two)h +(meanings:)30 b(on)23 b(the)f(one)g(hand,)0 3491 y(Java)i(as)f(a)g(pr)n +(ogramming)i(language)f(is)g(meant,)f(on)h(the)g(other)g(hand,)f(the)h +(Java)g(V)-5 b(irtual)23 b(Machine,)0 3611 y(which)k(is)g(not)g +(necessarily)h(tar)n(geted)g(by)f(the)g(Java)f(language)h(exclusively) +-11 b(,)28 b(but)g(may)e(be)h(used)g(by)0 3731 y(other)j(languages)f +(as)g(well)f(\(e.g.)43 b(Eif)n(fel)29 b([CCZ97],)g(or)h(Ada)e([T)-9 +b(af96]\).)42 b(W)-9 b(e)28 b(assume)h(the)g(r)n(eader)g(to)0 +3852 y(be)g(familiar)h(with)g(the)f(Java)h(language)g(and)f(to)h(have)f +(a)h(general)f(understanding)h(of)g(the)g(V)-5 b(irtual)0 +3972 y(Machine.)0 4320 y Fm(2.1)119 b(Java)29 b(class)h(\002le)g +(format)0 4525 y Fq(Giving)g(a)f(full)g(overview)h(of)g(the)f(design)g +(issues)h(of)f(the)h(Java)f(class)h(\002le)f(format)h(and)f(the)g +(associ-)0 4645 y(ated)h(byte)g(code)g(instr)o(uctions)j(is)d(beyond)g +(the)g(scope)h(of)f(this)h(paper)-7 b(.)45 b(W)-9 b(e)29 +b(will)h(just)h(give)f(a)g(brief)0 4766 y(intr)n(oduction)36 +b(covering)e(the)g(details)f(that)i(ar)n(e)e(necessary)h(for)g +(understanding)g(the)g(r)n(est)g(of)g(this)0 4886 y(paper)-7 +b(.)39 b(The)28 b(format)h(of)f(class)h(\002les)f(and)f(the)h(byte)h +(code)f(instr)o(uction)i(set)f(ar)n(e)f(described)g(in)f(mor)n(e)0 +5007 y(detail)k(in)f(the)h(\223Java)g(V)-5 b(irtual)31 +b(Machine)g(Speci\002cation\224)h([L)-9 b(Y97])2542 4970 +y Fn(2)2579 5007 y Fq(,)32 b(and)f(in)f([MD97].)49 b(Especially)-11 +b(,)0 5127 y(we)23 b(will)g(not)h(deal)e(with)i(the)f(security)h +(constraints)h(that)f(the)f(Java)g(V)-5 b(irtual)24 b(Machine)f(has)g +(to)g(check)0 5247 y(at)i(r)o(un-time,)h(i.e.)k(the)25 +b(byte)h(code)f(veri\002er)-7 b(.)p 0 5371 1530 4 v 116 +5433 a Fk(2)149 5463 y Fj(Also)21 b(available)f(online)i(at)e +Fi(http://www.javasoft.com/docs/books/)o(vmspe)o(c/inde)o(x.htm)o(l) +1888 5712 y Fq(3)p eop +%%Page: 4 4 +4 3 bop 146 407 a Fq(Figur)n(e)40 b(2)e(shows)i(a)e(simpli\002ed)h +(example)f(of)h(the)g(contents)h(of)f(a)g(Java)f(class)i(\002le:)58 +b(It)38 b(starts)0 527 y(with)c(a)f(header)g(containing)h(a)f +(\223magic)h(number)7 b(\224)33 b(\()p Fh(0xCAFEBABE)p +Fq(\))f(and)h(the)g(version)h(number)-7 b(,)0 648 y(followed)33 +b(by)f(the)g Fp(constant)h(pool)p Fq(,)g(which)g(can)e(be)h(r)n(oughly) +i(thought)g(of)e(as)g(the)g(text)h(segment)f(of)0 768 +y(an)j(executable,)j(the)e Fp(access)e(rights)g Fq(of)i(the)g(class)g +(encoded)f(by)h(a)f(bit)h(mask,)i(a)d(list)h(of)g(interfaces)0 +888 y(implemented)19 b(by)h(the)f(class,)i(lists)f(containing)h(the)f +(\002elds)f(and)g(methods)h(of)g(the)g(class,)h(and)e(\002nally)0 +1009 y(the)35 b Fp(class)f(attributes)p Fq(,)j(e.g.)60 +b(the)35 b Fh(SourceFile)d Fq(attribute)37 b(telling)e(the)g(name)f(of) +h(the)g(sour)n(ce)h(\002le.)0 1129 y(Attributes)28 b(ar)n(e)f(a)g(way)g +(of)g(putting)h(additional,)g(e.g.)36 b(user)n(-de\002ned,)28 +b(information)g(into)g(class)f(\002le)0 1249 y(data)e(str)o(uctur)n +(es.)34 b(For)26 b(example,)f(a)g(custom)h(class)g(loader)f(may)h +(evaluate)f(such)g(attribute)i(data)e(in)0 1370 y(or)n(der)h(to)f +(perform)h(its)f(transformations.)33 b(The)25 b(JVM)g(speci\002cation)h +(declar)n(es)f(that)g(unknown,)g(i.e.)0 1490 y(user)n(-de\002ned)g +(attributes)i(must)e(be)g(ignor)n(ed)h(by)f(any)g(V)-5 +b(irtual)25 b(Machine)g(implementation.)0 5123 y @beginspecial +0 @llx 0 @lly 520 @urx 460 @ury 4590 @rwi @setspecial +%%BeginDocument: eps/classfile.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: classfile.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Mon Nov 30 16:01:26 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 520 460 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-17.0 540.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 10000 m -1000 -1000 l 9937 -1000 l 9937 10000 l cp clip + 0.06000 0.06000 sc +% Polyline +7.500 slw +n 2999 6599 m 2400 6599 l 2400 6749 l 2999 6749 l cp gs col0 s gr +% Polyline +n 2400 6749 m 2999 6749 l 2999 6899 l 2400 6899 l cp gs col0 s gr +% Polyline +n 2999 6899 m 2400 6899 l 2400 7049 l 2999 7049 l cp gs col0 s gr +% Polyline +n 2400 7049 m 2999 7049 l 2999 7200 l 2400 7200 l cp gs col0 s gr +% Polyline +n 2400 7200 m 2999 7200 l 2999 7349 l 2400 7349 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 7424 m 2699 7724 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 6449 m 3299 6449 l 3299 7949 l 299 7949 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 6824 m +gs 1 -1 sc (Methods) col0 sh gr +% Polyline +n 2999 5099 m 2400 5099 l 2400 5249 l 2999 5249 l cp gs col0 s gr +% Polyline +n 2400 5249 m 2999 5249 l 2999 5399 l 2400 5399 l cp gs col0 s gr +% Polyline +n 2999 5399 m 2400 5399 l 2400 5549 l 2999 5549 l cp gs col0 s gr +% Polyline +n 2400 5549 m 2999 5549 l 2999 5699 l 2400 5699 l cp gs col0 s gr +% Polyline +n 2400 5699 m 2999 5699 l 2999 5849 l 2400 5849 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 5924 m 2699 6224 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 4949 m 3299 4949 l 3299 6449 l 299 6449 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 5399 m +gs 1 -1 sc (Fields) col0 sh gr +% Polyline +n 299 4199 m 3299 4199 l 3299 4949 l 299 4949 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 4649 m +gs 1 -1 sc (Implemented interfaces) col0 sh gr +% Polyline +n 299 3449 m 3299 3449 l 3299 4199 l 299 4199 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 3899 m +gs 1 -1 sc (Access rights) col0 sh gr +% Polyline +n 299 1349 m 3299 1349 l 3299 2099 l 299 2099 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 1799 m +gs 1 -1 sc (Header) col0 sh gr +% Polyline +n 2999 2249 m 2400 2249 l 2400 2400 l 2999 2400 l cp gs col0 s gr +% Polyline +n 2400 2400 m 2999 2400 l 2999 2549 l 2400 2549 l cp gs col0 s gr +% Polyline +n 2999 2549 m 2400 2549 l 2400 2699 l 2999 2699 l cp gs col0 s gr +% Polyline +n 2400 2699 m 2999 2699 l 2999 2849 l 2400 2849 l cp gs col0 s gr +% Polyline +n 2400 2849 m 2999 2849 l 2999 2999 l 2400 2999 l cp gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 2699 3074 m 2699 3374 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 299 2099 m 3299 2099 l 3299 3449 l 299 3449 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 2549 m +gs 1 -1 sc (Constant pool) col0 sh gr +% Polyline +n 299 7949 m 3299 7949 l 3299 8699 l 299 8699 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +599 8400 m +gs 1 -1 sc (Class attributes) col0 sh gr +% Polyline +n 4800 2999 m 7499 2999 l 7499 4349 l 4800 4349 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 3299 m +gs 1 -1 sc (ConstantFieldref) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 3600 m +gs 1 -1 sc ("aVariable") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 3884 m +gs 1 -1 sc ("[Ljava/lang/Object;") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 4199 m +gs 1 -1 sc ("HelloWorld") col0 sh gr +% Polyline +n 5024 2624 m 7124 2624 l 7124 2924 l 5024 2924 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +5099 2849 m +gs 1 -1 sc ("java/io/PrintStream") col0 sh gr +% Polyline +n 4800 1649 m 7499 1649 l 7499 2999 l 4800 2999 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 1949 m +gs 1 -1 sc (ConstantMethodRef) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 2249 m +gs 1 -1 sc ("println") col0 sh gr +/Helvetica ff 210.00 scf sf +5099 2534 m +gs 1 -1 sc ("\(Ljava/lang/String;\)V") col0 sh gr +% Polyline +n 4800 4349 m 7499 4349 l 7499 5099 l 4800 5099 l cp gs col0 s gr +/Helvetica-Bold ff 210.00 scf sf +5099 4649 m +gs 1 -1 sc (ConstantClass) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 4949 m +gs 1 -1 sc ("java/io/PrintStream") col0 sh gr +% Polyline +n 4080 6500 m 3975 6500 3975 7770 105 arcto 4 {pop} repeat + 3975 7875 8820 7875 105 arcto 4 {pop} repeat + 8925 7875 8925 6605 105 arcto 4 {pop} repeat + 8925 6500 4080 6500 105 arcto 4 {pop} repeat + cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 3855 6725 m 3750 6725 3750 7995 105 arcto 4 {pop} repeat + 3750 8100 8595 8100 105 arcto 4 {pop} repeat + 8700 8100 8700 6830 105 arcto 4 {pop} repeat + 8700 6725 3855 6725 105 arcto 4 {pop} repeat + cp gs col7 1.00 shd ef gr gs col0 s gr +% Polyline +30.000 slw + [15 45] 45 sd +n 6150 7800 m 6150 7950 l gs col0 s gr [] 0 sd +% Polyline +7.500 slw +n 5550 7200 m 7200 7200 l 7200 7425 l 5550 7425 l cp gs col0 s gr +% Polyline +n 5550 7500 m 8625 7500 l 8625 7725 l 5550 7725 l cp gs col0 s gr +/Courier-Bold ff 180.00 scf sf +4050 7050 m +gs 1 -1 sc (getstatic java.lang.System.out) col0 sh gr +/Courier-Bold ff 180.00 scf sf +4050 7650 m +gs 1 -1 sc (invokevirtual java.io.PrintStream.println) col0 sh gr +/Courier-Bold ff 180.00 scf sf +4050 7350 m +gs 1 -1 sc (ldc "Hello, world") col0 sh gr +% Polyline + [15 45] 45 sd +n 2400 2249 m 4800 1649 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2400 2849 m 4800 5849 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +4693 3661 m 4800 3600 l 4734 3705 l 4832 3611 l 4790 3568 l cp +clip +n 2999 5324 m 4800 3600 l gs col0 s gr gr + +% arrowhead +n 4693 3661 m 4800 3600 l 4734 3705 l 4713 3683 l 4693 3661 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3669 7107 m 3750 7200 l 3635 7156 l 3745 7233 l 3779 7184 l cp +clip +n 2999 6674 m 3750 7200 l gs col0 s gr gr + +% arrowhead +n 3669 7107 m 3750 7200 l 3635 7156 l 3652 7131 l 3669 7107 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 5099 1649 m 5099 1349 l 7799 1349 l 7799 5549 l 7499 5549 l 7499 1649 l + 5099 1649 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline + [15 45] 45 sd +n 2999 2849 m 4800 4049 l gs col0 s gr [] 0 sd +% Polyline + [15 45] 45 sd +n 2999 2249 m 4800 2024 l gs col0 s gr [] 0 sd +% Polyline +gs clippath +7609 2533 m 7500 2475 l 7624 2475 l 7493 2442 l 7478 2500 l cp +clip +n 7800 2550 m 7500 2475 l gs col7 s gr gr + +% arrowhead +n 7609 2533 m 7500 2475 l 7624 2475 l 7616 2504 l 7609 2533 l cp gs col7 1.00 shd ef gr col7 s +% Polyline +n 4800 5099 m 7499 5099 l 7499 5849 l 4800 5849 l cp gs col0 s gr +% Polyline +n 7800 7500 m 7801 7499 l 7804 7496 l 7809 7491 l 7816 7483 l 7826 7472 l + 7840 7457 l 7856 7440 l 7875 7419 l 7897 7395 l 7921 7368 l + 7946 7340 l 7973 7310 l 7999 7279 l 8026 7247 l 8052 7216 l + 8078 7184 l 8102 7152 l 8125 7121 l 8147 7090 l 8167 7059 l + 8186 7029 l 8203 6998 l 8220 6966 l 8235 6934 l 8250 6900 l + 8261 6873 l 8272 6845 l 8282 6816 l 8292 6786 l 8303 6756 l + 8313 6724 l 8323 6692 l 8333 6659 l 8343 6626 l 8353 6592 l + 8363 6557 l 8373 6522 l 8382 6487 l 8392 6451 l 8402 6415 l + 8412 6379 l 8421 6342 l 8431 6305 l 8440 6268 l 8449 6231 l + 8458 6194 l 8467 6157 l 8476 6120 l 8484 6082 l 8492 6045 l + 8500 6007 l 8508 5969 l 8515 5932 l 8522 5894 l 8528 5856 l + 8535 5817 l 8540 5778 l 8545 5739 l 8550 5700 l 8554 5664 l + 8557 5628 l 8560 5591 l 8563 5554 l 8565 5517 l 8567 5479 l + 8568 5440 l 8570 5401 l 8571 5362 l 8572 5322 l 8572 5281 l + 8573 5241 l 8573 5200 l 8573 5159 l 8573 5117 l 8573 5076 l + 8572 5034 l 8572 4992 l 8571 4950 l 8570 4908 l 8570 4866 l + 8569 4824 l 8568 4783 l 8567 4741 l 8566 4700 l 8565 4659 l + 8564 4619 l 8563 4578 l 8562 4538 l 8561 4499 l 8560 4460 l + 8559 4421 l 8558 4383 l 8557 4346 l 8555 4309 l 8554 4272 l + 8552 4236 l 8550 4200 l 8548 4161 l 8545 4121 l 8542 4083 l + 8540 4044 l 8537 4006 l 8534 3968 l 8531 3930 l 8528 3892 l + 8526 3854 l 8523 3815 l 8520 3777 l 8517 3739 l 8515 3702 l + 8512 3664 l 8509 3626 l 8506 3588 l 8503 3551 l 8500 3514 l + 8497 3477 l 8493 3440 l 8490 3404 l 8486 3368 l 8481 3333 l + 8477 3298 l 8471 3264 l 8466 3231 l 8460 3199 l 8453 3167 l + 8446 3136 l 8438 3107 l 8430 3078 l 8421 3051 l 8411 3025 l + 8400 3000 l 8385 2969 l 8368 2941 l 8349 2913 l 8328 2887 l + 8305 2862 l 8279 2838 l 8251 2814 l 8220 2790 l 8187 2767 l + 8153 2744 l 8117 2721 l 8080 2699 l 8043 2678 l 8006 2657 l + 7970 2638 l 7937 2620 l 7907 2604 l 7879 2590 l 7856 2578 l + 7837 2568 l 7823 2561 l 7812 2556 l 7805 2553 l 7802 2551 l + 7800 2550 l gs col0 s gr +% Polyline +gs clippath +4723 4703 m 4800 4800 l 4687 4750 l 4794 4833 l 4830 4785 l cp +clip +n 5025 2775 m 5024 2776 l 5020 2779 l 5015 2784 l 5006 2792 l 4993 2804 l + 4977 2818 l 4957 2836 l 4934 2857 l 4908 2881 l 4879 2907 l + 4849 2935 l 4818 2964 l 4786 2994 l 4754 3023 l 4723 3053 l + 4693 3082 l 4664 3110 l 4637 3137 l 4612 3163 l 4589 3188 l + 4568 3212 l 4549 3235 l 4531 3257 l 4515 3278 l 4500 3300 l + 4485 3324 l 4471 3347 l 4457 3371 l 4444 3396 l 4432 3420 l + 4419 3445 l 4408 3470 l 4396 3495 l 4385 3520 l 4374 3546 l + 4363 3571 l 4352 3596 l 4342 3622 l 4332 3647 l 4323 3673 l + 4314 3698 l 4306 3724 l 4299 3749 l 4292 3775 l 4286 3800 l + 4281 3825 l 4278 3850 l 4276 3875 l 4275 3900 l 4276 3925 l + 4278 3950 l 4282 3975 l 4287 4001 l 4293 4027 l 4301 4053 l + 4309 4080 l 4319 4106 l 4329 4133 l 4340 4160 l 4351 4187 l + 4363 4214 l 4375 4241 l 4387 4268 l 4399 4294 l 4411 4320 l + 4423 4345 l 4434 4370 l 4446 4394 l 4457 4417 l 4468 4439 l + 4478 4460 l 4489 4481 l 4500 4500 l 4513 4522 l 4528 4543 l + 4543 4563 l 4559 4583 l 4578 4603 l 4597 4623 l 4618 4643 l + 4640 4664 l 4663 4685 l 4686 4705 l 4709 4724 l 4730 4742 l + 4749 4758 l 4765 4772 l 4778 4783 l 4800 4800 l gs col0 s gr gr + +% arrowhead +n 4723 4703 m 4800 4800 l 4687 4750 l 4705 4727 l 4723 4703 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7591 5782 m 7499 5699 l 7619 5728 l 7500 5665 l 7472 5719 l cp +clip +n 7200 7275 m 7203 7274 l 7208 7271 l 7219 7265 l 7235 7257 l 7256 7246 l + 7282 7233 l 7312 7217 l 7346 7200 l 7381 7182 l 7417 7163 l + 7453 7144 l 7487 7126 l 7520 7109 l 7551 7092 l 7580 7076 l + 7607 7061 l 7631 7048 l 7654 7034 l 7676 7022 l 7696 7010 l + 7714 6998 l 7733 6986 l 7750 6975 l 7770 6961 l 7790 6947 l + 7810 6933 l 7829 6918 l 7847 6903 l 7866 6887 l 7883 6871 l + 7901 6855 l 7917 6837 l 7933 6820 l 7947 6802 l 7961 6784 l + 7973 6766 l 7984 6748 l 7994 6729 l 8003 6711 l 8010 6693 l + 8016 6675 l 8021 6656 l 8025 6638 l 8028 6618 l 8030 6598 l + 8031 6578 l 8031 6556 l 8030 6534 l 8029 6511 l 8026 6487 l + 8023 6462 l 8019 6438 l 8015 6412 l 8009 6387 l 8004 6362 l + 7997 6338 l 7991 6314 l 7984 6291 l 7977 6269 l 7971 6247 l + 7964 6226 l 7957 6207 l 7950 6187 l 7942 6167 l 7934 6146 l + 7926 6126 l 7918 6106 l 7909 6086 l 7900 6066 l 7891 6046 l + 7881 6027 l 7871 6008 l 7861 5990 l 7850 5972 l 7840 5956 l + 7829 5940 l 7818 5925 l 7807 5911 l 7797 5898 l 7785 5886 l + 7774 5874 l 7762 5863 l 7750 5852 l 7737 5841 l 7722 5830 l + 7707 5819 l 7689 5807 l 7670 5795 l 7648 5782 l 7625 5769 l + 7602 5755 l 7578 5742 l 7555 5729 l 7535 5718 l 7499 5699 l gs col0 s gr gr + +% arrowhead +n 7591 5782 m 7499 5699 l 7619 5728 l 7605 5755 l 7591 5782 l cp gs 0.00 setgray ef gr col0 s +/Helvetica ff 210.00 scf sf +975 9000 m +gs 1 -1 sc (HelloWorld.class) col0 sh gr +/Helvetica ff 210.00 scf sf +5099 5699 m +gs 1 -1 sc ("Hello, world") col0 sh gr +/Helvetica-Bold ff 210.00 scf sf +5099 5399 m +gs 1 -1 sc (ConstantString) col0 sh gr +$F2psEnd +rs + +%%EndDocument + @endspecial 1252 5327 a(Figur)n(e)h(2:)31 b(Java)25 +b(class)g(\002le)g(format)1888 5712 y(4)p eop +%%Page: 5 5 +5 4 bop 146 407 a Fq(Because)20 b(all)f(of)h(the)g(information)h +(needed)d(to)i(dynamically)g(r)n(esolve)h(the)f(symbolic)g(r)n(efer)n +(ences)0 527 y(to)32 b(classes,)h(\002elds)e(and)g(methods)h(at)f(r)o +(un-time)h(is)f(coded)h(with)f(string)i(constants,)h(the)d(constant)0 +648 y(pool)40 b(contains)g(in)g(fact)g(the)f(lar)n(gest)i(portion)f(of) +g(an)f(average)h(class)f(\002le,)k(appr)n(oximately)e(60\045)0 +768 y([AP98)o(].)31 b(The)25 b(byte)h(code)f(instr)o(uctions)i +(themselves)f(just)g(make)e(up)h(12\045.)146 893 y(The)43 +b(right)g(upper)g(box)g(shows)h(a)e(\223zoomed\224)h(excerpt)g(of)g +(the)g(constant)h(pool,)j(while)c(the)0 1014 y(r)n(ounded)37 +b(box)g(below)f(depicts)h(some)g(instr)o(uctions)i(that)e(ar)n(e)f +(contained)h(within)g(a)f(method)g(of)0 1134 y(the)e(example)f(class.) +56 b(These)34 b(instr)o(uctions)i(r)n(epr)n(esent)e(the)f +(straightforwar)n(d)k(translation)e(of)f(the)0 1254 y(well-known)26 +b(statement:)179 1522 y Fh(System.out.println\("Hello,)54 +b(world"\);)146 1784 y Fq(The)22 b(\002rst)h(instr)o(uction)h(loads)e +(the)g(contents)h(of)f(the)g(\002eld)g Fh(out)f Fq(of)h(class)h +Fh(java.lang.System)0 1904 y Fq(onto)30 b(the)g(operand)f(stack.)44 +b(This)29 b(is)h(an)e(instance)i(of)f(the)h(class)f Fh +(java.io.PrintStream)p Fq(.)39 b(The)0 2025 y Fh(ldc)25 +b Fq(\(\223Load)g(constant\224\))i(pushes)f(a)f(r)n(efer)n(ence)h(to)g +(the)g(string)h(\224Hello)e(world\224)h(on)g(the)g(stack.)33 +b(The)0 2145 y(next)28 b(instr)o(uction)j(invokes)e(the)f(instance)g +(method)g Fh(println)f Fq(which)h(takes)g(both)h(values)f(as)g(pa-)0 +2265 y(rameters)36 b(\(Instance)g(methods)g(always)h(implicitly)f(take) +g(an)g(instance)g(r)n(efer)n(ence)g(as)f(their)i(\002rst)0 +2386 y(ar)n(gument\).)146 2511 y(Instr)o(uctions,)24 +b(other)d(data)g(str)o(uctur)n(es)i(within)e(the)g(class)g(\002le)f +(and)h(constants)h(themselves)f(may)0 2632 y(r)n(efer)33 +b(to)g(constants)h(in)f(the)f(constant)i(pool.)54 b(Such)33 +b(r)n(efer)n(ences)g(ar)n(e)g(implemented)f(via)g(\002xed)h(in-)0 +2752 y(dexes)h(encoded)g(dir)n(ectly)i(into)f(the)f(instr)o(uctions.)62 +b(This)34 b(is)g(illustrated)i(for)f(some)f(items)h(of)g(the)0 +2872 y(\002gur)n(e)26 b(emphasized)e(with)h(a)g(surr)n(ounding)i(box.) +146 2998 y(For)h(example,)f(the)h Fh(invokevirtual)c +Fq(instr)o(uction)29 b(r)n(efers)f(to)g(a)f Fh(MethodRef)e +Fq(constant)j(that)0 3118 y(contains)34 b(information)h(about)f(the)g +(name)f(of)h(the)f(called)g(method,)j(the)d(signatur)n(e)i(\(i.e.)56 +b(the)33 b(en-)0 3238 y(coded)38 b(ar)n(gument)h(and)f(r)n(eturn)h +(types\),)j(and)c(to)h(which)f(class)h(the)f(method)h(belongs.)71 +b(In)37 b(fact,)0 3359 y(as)c(emphasized)f(by)h(the)g(boxed)g(value,)i +(the)e Fh(MethodRef)d Fq(constant)35 b(itself)e(just)h(r)n(efers)f(to)h +(other)0 3479 y(entries)23 b(holding)f(the)h(r)n(eal)f(data,)g(e.g.)30 +b(it)23 b(r)n(efers)g(to)g(a)f Fh(ConstantClass)d Fq(entry)k +(containing)g(a)f(sym-)0 3599 y(bolic)36 b(r)n(efer)n(ence)h(to)f(the)g +(class)g Fh(java.io.PrintStream)p Fq(.)60 b(T)-9 b(o)36 +b(keep)f(the)h(class)g(\002le)g(compact,)0 3720 y(such)29 +b(constants)i(ar)n(e)e(typically)h(shar)n(ed)f(by)g(dif)n(fer)n(ent)h +(instr)o(uctions.)45 b(Similarly)-11 b(,)30 b(a)f(\002eld)f(is)h(r)n +(epr)n(e-)0 3840 y(sented)23 b(by)g(a)f Fh(Fieldref)f +Fq(constant)k(that)e(includes)g(information)h(about)g(the)f(name,)f +(the)h(type)g(and)0 3961 y(the)i(containing)h(class)g(of)f(the)g +(\002eld.)146 4086 y(The)37 b(constant)i(pool)f(basically)g(holds)f +(the)h(following)g(types)g(of)g(constants:)57 b(Refer)n(ences)37 +b(to)0 4206 y(methods,)25 b(\002elds)g(and)g(classes,)g(strings,)i +(integers,)f(\003oats,)f(longs,)h(and)e(doubles.)0 4540 +y Fm(2.2)119 b(Byte)30 b(code)g(instruction)f(set)0 4741 +y Fq(The)f(JVM)h(is)f(a)g(stack-oriented)i(interpr)n(eter)g(that)f(cr)n +(eates)g(a)f(local)g(stack)i(frame)e(of)h(\002xed)f(size)g(for)0 +4861 y(every)21 b(method)f(invocation.)31 b(The)19 b(size)h(of)h(the)f +(local)h(stack)g(has)f(to)h(be)f(computed)g(by)h(the)f(compiler)-7 +b(.)0 4981 y(V)e(alues)21 b(may)h(also)g(be)f(stor)n(ed)i +(intermediately)f(in)f(a)h(frame)f(ar)n(ea)h(containing)g +Fp(local)f(variables)g Fq(which)0 5102 y(can)28 b(be)g(used)g(like)h(a) +f(set)h(of)f(r)n(egisters.)43 b(These)28 b(local)g(variables)h(ar)n(e)f +(number)n(ed)h(fr)n(om)g(0)f(to)h(65535,)0 5222 y(i.e.)60 +b(you)36 b(have)e(a)h(maximum)g(of)g(65536)f(of)h(local)g(variables.)61 +b(The)34 b(stack)i(frames)f(of)g(caller)g(and)0 5342 +y(callee)25 b(method)i(ar)n(e)f(overlapping,)h(i.e.)34 +b(the)26 b(caller)g(pushes)g(ar)n(guments)h(onto)h(the)e(operand)g +(stack)0 5463 y(and)f(the)g(called)f(method)i(r)n(eceives)f(them)g(in)g +(local)g(variables.)1888 5712 y(5)p eop +%%Page: 6 6 +6 5 bop 146 407 a Fq(The)32 b(byte)g(code)g(instr)o(uction)j(set)d +(curr)n(ently)i(consists)f(of)g(212)e(instr)o(uctions,)36 +b(44)31 b(opcodes)i(ar)n(e)0 527 y(marked)g(as)g(r)n(eserved)g(and)g +(may)g(be)f(used)h(for)h(futur)n(e)g(extensions)g(or)g(intermediate)f +(optimiza-)0 648 y(tions)22 b(within)f(the)g(V)-5 b(irtual)21 +b(Machine.)29 b(The)21 b(instr)o(uction)i(set)e(can)g(be)g(r)n(oughly)h +(gr)n(ouped)g(as)f(follows:)0 893 y Fg(Stack)k(operations:)49 +b Fq(Constants)26 b(can)e(be)h(pushed)f(onto)i(the)f(stack)g(either)g +(by)g(loading)g(them)g(fr)n(om)244 1013 y(the)f(constant)h(pool)f(with) +h(the)e Fh(ldc)g Fq(instr)o(uction)j(or)f(with)f(special)g +(\223short-cut\224)h(instr)o(uctions)244 1134 y(wher)n(e)37 +b(the)g(operand)f(is)h(encoded)g(into)g(the)g(instr)o(uctions,)43 +b(e.g.)66 b Fh(iconst)p 3211 1134 30 4 v 34 w(0)37 b +Fq(or)g Fh(bipush)244 1254 y Fq(\(push)25 b(byte)h(value\).)0 +1469 y Fg(Arithmetic)e(operations:)50 b Fq(The)36 b(instr)o(uction)k +(set)d(of)h(the)f(Java)h(V)-5 b(irtual)37 b(Machine)g(distinguishes)244 +1590 y(its)24 b(operand)e(types)i(using)g(dif)n(fer)n(ent)g(instr)o +(uctions)h(to)f(operate)f(on)h(values)f(of)g(speci\002c)h(type.)244 +1710 y(Arithmetic)32 b(operations)g(starting)i(with)d +Fh(i)p Fq(,)i(for)f(example,)h(denote)e(an)g(integer)h(operation.)244 +1831 y(E.g.,)k Fh(iadd)e Fq(that)h(adds)f(two)h(integers)g(and)f +(pushes)g(the)g(r)n(esult)i(back)e(on)h(the)f(stack.)60 +b(The)244 1951 y(Java)23 b(types)h Fh(boolean)p Fq(,)d +Fh(byte)p Fq(,)i Fh(short)p Fq(,)f(and)g Fh(char)g Fq(ar)n(e)h(handled) +f(as)h(integers)h(by)g(the)f(JVM.)0 2166 y Fg(Control)j(\003ow:)49 +b Fq(Ther)n(e)40 b(ar)n(e)g(branch)h(instr)o(uctions)i(like)d +Fh(goto)g Fq(and)g Fh(if)p 2836 2166 V 35 w(icmpeq)p +Fq(,)j(which)d(com-)244 2287 y(par)n(es)32 b(two)h(integers)g(for)h +(equality)-11 b(.)52 b(Ther)n(e)33 b(is)f(also)h(a)f +Fh(jsr)f Fq(\(jump)i(sub-r)n(outine\))h(and)e Fh(ret)244 +2407 y Fq(pair)26 b(of)i(instr)o(uctions)h(that)e(is)g(used)f(to)h +(implement)g(the)f Fh(finally)f Fq(clause)i(of)g Fh(try-catch)244 +2528 y Fq(blocks.)32 b(Exceptions)26 b(may)f(be)g(thr)n(own)h(with)g +(the)f Fh(athrow)e Fq(instr)o(uction.)244 2696 y(Branch)30 +b(tar)n(gets)i(ar)n(e)f(coded)f(as)h(of)n(fsets)h(fr)n(om)f(the)g(curr) +n(ent)g(byte)g(code)g(position,)i(i.e.)46 b(with)244 +2816 y(an)25 b(integer)g(number)-7 b(.)0 3031 y Fg(Load)25 +b(and)f(store)i(operations)49 b Fq(for)31 b(local)h(variables)f(like)f +Fh(iload)g Fq(and)g Fh(istore)p Fq(.)47 b(Ther)n(e)31 +b(ar)n(e)g(also)244 3152 y(array)26 b(operations)g(like)f +Fh(iastore)e Fq(which)i(stor)n(es)i(an)d(integer)i(value)f(into)g(an)g +(array)-11 b(.)0 3367 y Fg(Field)25 b(access:)50 b Fq(The)24 +b(value)g(of)h(an)f(instance)h(\002eld)f(may)g(be)g(r)n(etrieved)i +(with)e Fh(getfield)f Fq(and)h(writ-)244 3488 y(ten)d(with)g +Fh(putfield)p Fq(.)28 b(For)22 b(static)g(\002elds,)g(ther)n(e)g(ar)n +(e)f Fh(getstatic)e Fq(and)h Fh(putstatic)f Fq(coun-)244 +3608 y(terparts.)0 3824 y Fg(Method)25 b(invocation:)50 +b Fq(Methods)20 b(may)f(either)g(be)g(called)f(via)h(static)h(r)n(efer) +n(ences)g(with)f Fh(invokesta-)244 3944 y(tic)40 b Fq(or)i(be)f(bound)g +(virtually)i(with)e(the)g Fh(invokevirtual)e Fq(instr)o(uction.)81 +b(Super)41 b(class)244 4064 y(methods)25 b(and)g(private)g(methods)h +(ar)n(e)f(invoked)h(with)f Fh(invokespecial)p Fq(.)0 +4280 y Fg(Object)g(allocation:)50 b Fq(Class)28 b(instances)g(ar)n(e)g +(allocated)g(with)h(the)f Fh(new)f Fq(instr)o(uction,)k(arrays)e(of)f +(ba-)244 4400 y(sic)j(type)g(like)f Fh(int[])f Fq(with)i +Fh(newarray)p Fq(,)f(arrays)i(of)f(r)n(efer)n(ences)g(like)f +Fh(String[][])e Fq(with)244 4521 y Fh(anewarray)23 b +Fq(or)i Fh(multianewarray)p Fq(.)0 4736 y Fg(Conversion)h(and)e(type)h +(checking:)49 b Fq(For)23 b(stack)g(operands)g(of)f(basic)g(type)h +(ther)n(e)f(exist)h(casting)g(op-)244 4856 y(erations)35 +b(like)e Fh(f2i)g Fq(which)i(converts)g(a)e(\003oat)h(value)g(into)h +(an)e(integer)-7 b(.)58 b(The)33 b(validity)i(of)f(a)244 +4977 y(type)24 b(cast)h(may)f(be)f(checked)h(with)g Fh(checkcast)e +Fq(and)i(the)g Fh(instanceof)d Fq(operator)k(can)f(be)244 +5097 y(dir)n(ectly)i(mapped)e(to)i(the)f(equally)g(named)f(instr)o +(uction.)146 5342 y(Most)38 b(instr)o(uctions)i(have)c(a)h(\002xed)g +(length,)j(but)d(ther)n(e)g(ar)n(e)g(also)g(some)g(variable-length)h +(in-)0 5463 y(str)o(uctions:)59 b(In)37 b(particular)-7 +b(,)41 b(the)d Fh(lookupswitch)c Fq(and)j Fh(tableswitch)f +Fq(instr)o(uctions,)43 b(which)1888 5712 y(6)p eop +%%Page: 7 7 +7 6 bop 0 407 a Fq(ar)n(e)31 b(used)f(to)h(implement)g +Fh(switch\(\))d Fq(statements.)49 b(Since)31 b(the)g(number)f(of)h +Fh(case)f Fq(clauses)h(may)0 527 y(vary)-11 b(,)26 b(these)f(instr)o +(uctions)i(contain)f(a)f(variable)g(number)g(of)g(statements.)146 +648 y(W)-9 b(e)27 b(will)g(not)h(list)g(all)f(byte)h(code)g(instr)o +(uctions)i(her)n(e,)e(since)f(these)h(ar)n(e)f(explained)g(in)g(detail) +g(in)0 768 y(the)g(JVM)g(speci\002cation.)37 b(The)26 +b(opcode)h(names)f(ar)n(e)h(mostly)h(self-explaining,)f(so)g +(understanding)0 888 y(the)e(following)h(code)g(examples)e(should)i(be) +e(fairly)i(intuitive.)0 1183 y Fm(2.3)119 b(Method)30 +b(code)0 1373 y Fq(Non-abstract)35 b(methods)g(contain)f(an)g +(attribute)h(\()p Fh(Code)p Fq(\))e(that)h(holds)g(the)g(following)h +(data:)48 b(The)0 1493 y(maximum)27 b(size)f(of)h(the)f(method's)h +(stack)g(frame,)g(the)f(number)h(of)g(local)g(variables)f(and)g(an)g +(array)0 1614 y(of)i(byte)h(code)f(instr)o(uctions.)43 +b(Optionally)-11 b(,)29 b(it)g(may)f(also)g(contain)h(information)g +(about)g(the)f(names)0 1734 y(of)d(local)h(variables)f(and)g(sour)n(ce) +h(\002le)f(line)f(numbers)i(that)f(can)g(be)g(used)g(by)g(a)g(debugger) +-7 b(.)146 1855 y(Whenever)23 b(an)h(exception)h(is)f(thr)n(own,)h(the) +f(JVM)g(performs)h(exception)f(handling)g(by)g(looking)0 +1975 y(into)31 b(a)f(table)h(of)g(exception)g(handlers.)47 +b(The)31 b(table)f(marks)h(handlers,)h(i.e.)47 b(pieces)30 +b(of)h(code,)h(to)f(be)0 2095 y(r)n(esponsible)23 b(for)h(exceptions)f +(of)h(certain)f(types)g(that)g(ar)n(e)g(raised)g(within)g(a)f(given)h +(ar)n(ea)f(of)i(the)e(byte)0 2216 y(code.)63 b(When)35 +b(ther)n(e)g(is)h(no)g(appr)n(opriate)g(handler)f(the)h(exception)g(is) +g(pr)n(opagated)g(back)g(to)h(the)0 2336 y(caller)29 +b(of)h(the)f(method.)43 b(The)29 b(handler)g(information)h(is)f(itself) +h(stor)n(ed)g(in)f(an)g(attribute)i(contained)0 2456 +y(within)25 b(the)h Fh(Code)e Fq(attribute.)0 2751 y +Fm(2.4)119 b(Byte)30 b(code)g(of)n(fsets)0 2941 y Fq(T)-9 +b(ar)n(gets)32 b(of)g(branch)f(instr)o(uctions)j(like)d +Fh(goto)f Fq(ar)n(e)h(encoded)g(as)g(r)n(elative)h(of)n(fsets)g(in)f +(the)h(array)f(of)0 3062 y(byte)i(codes.)55 b(Exception)33 +b(handlers)g(and)f(local)h(variables)g(r)n(efer)g(to)g(absolute)h(addr) +n(esses)e(within)0 3182 y(the)26 b(byte)g(code.)34 b(The)26 +b(former)h(contains)f(r)n(efer)n(ences)h(to)g(the)f(start)h(and)e(the)h +(end)g(of)g(the)g Fh(try)f Fq(block,)0 3302 y(and)d(to)i(the)e(instr)o +(uction)j(handler)e(code.)30 b(The)22 b(latter)h(marks)h(the)e(range)h +(in)g(which)g(a)f(local)h(variable)0 3423 y(is)g(valid,)f(i.e.)30 +b(its)23 b(scope.)30 b(This)23 b(makes)f(it)h(dif)n(\002cult)h(to)f +(insert)g(or)g(delete)f(code)g(ar)n(eas)h(on)f(this)h(level)f(of)0 +3543 y(abstraction,)29 b(since)f(one)f(has)g(to)h(r)n(ecompute)g(the)f +(of)n(fsets)i(every)f(time)f(and)g(update)f(the)i(r)n(eferring)0 +3663 y(objects.)k(W)-9 b(e)24 b(will)h(see)g(in)g(section)h(3.3)e(how)i +Fo(BCEL)i Fq(r)n(emedies)d(this)h(r)n(estriction.)0 3958 +y Fm(2.5)119 b(T)-11 b(ype)30 b(information)0 4148 y +Fq(Java)k(is)h(a)f(type-safe)h(language)f(and)g(the)g(information)i +(about)f(the)f(types)h(of)g(\002elds,)i(local)d(vari-)0 +4269 y(ables,)27 b(and)g(methods)g(is)g(stor)n(ed)h(in)f +Fp(signatur)n(es)p Fq(.)37 b(These)26 b(ar)n(e)h(strings)i(stor)n(ed)f +(in)f(the)g(constant)h(pool)0 4389 y(and)35 b(encoded)h(in)f(a)g +(special)h(format.)64 b(For)36 b(example)f(the)h(ar)n(gument)h(and)e(r) +n(eturn)h(types)h(of)f(the)0 4509 y Fh(main)24 b Fq(method)120 +4688 y Fh(public)58 b(static)g(void)h(main\(String[])e(argv\))146 +4866 y Fq(ar)n(e)25 b(r)n(epr)n(esented)h(by)f(the)g(signatur)n(e)120 +5044 y Fh(\([java/lang/String;\)V)146 5222 y Fq(Classes)19 +b(and)g(arrays)h(ar)n(e)f(internally)g(r)n(epr)n(esented)h(by)f +(strings)i(like)e Fh("java/lang/String")p Fq(,)0 5342 +y(basic)k(types)g(like)g Fh(float)e Fq(by)i(an)f(integer)h(number)-7 +b(.)30 b(W)-5 b(ithin)22 b(signatur)n(es)i(they)f(ar)n(e)g(r)n(epr)n +(esented)g(by)0 5463 y(single)i(characters,)h(e.g.,)f +Fh("I")p Fq(,)f(for)i(integer)-7 b(.)1888 5712 y(7)p +eop +%%Page: 8 8 +8 7 bop 0 407 a Fm(2.6)119 b(Code)30 b(example)0 608 +y Fq(The)25 b(following)i(example)e(pr)n(ogram)i(pr)n(ompts)g(for)f(a)f +(number)h(and)f(prints)h(the)g(faculty)g(of)g(it.)33 +b(The)0 728 y Fh(readLine\(\))19 b Fq(method)i(r)n(eading)g(fr)n(om)h +(the)f(standar)n(d)h(input)f(may)g(raise)g(an)g Fh(IOException)d +Fq(and)0 849 y(if)h(a)g(misspelled)f(number)h(is)h(passed)e(to)i +Fh(parseInt\(\))d Fq(it)i(thr)n(ows)i(a)e Fh(NumberFormatException)p +Fq(.)0 969 y(Thus,)25 b(the)g(critical)h(ar)n(ea)f(of)h(code)f(must)g +(be)g(encapsulated)g(in)g(a)f Fh(try-catch)f Fq(block.)0 +1230 y Ff(import)52 b(java.io.*;)0 1343 y(public)g(class)g(Faculty)f({) +109 1456 y(private)g(static)h(BufferedReader)c(in)54 +b(=)g(new)f(BufferedReader\(n)o(ew)1745 1569 y(InputStreamReade)o(r\()o +(Sy)o(st)o(em.)o(in)o(\)\))o(;)109 1682 y(public)f(static)g(final)g +(int)h(fac\(int)f(n\))h({)218 1795 y(return)f(\(n)i(==)f(0\)?)g(1)i(:)f +(n)g(*)g(fac\(n)e(-)i(1\);)109 1907 y(})109 2020 y(public)e(static)g +(final)g(int)h(readInt\(\))e({)218 2133 y(int)i(n)h(=)h(4711;)218 +2246 y(try)e({)327 2359 y(System.out.prin)o(t\(")o(Pl)o(ea)o(se)48 +b(enter)k(a)i(number>)e("\);)327 2472 y(n)i(=)g(Integer.parseInt)o(\(i) +o(n.)o(re)o(adL)o(in)o(e\()o(\)\))o(;)218 2585 y(})g(catch\(IOExcepti)o +(on)48 b(e1\))53 b({)h(System.err.print)o(ln)o(\(e)o(1\))o(;)48 +b(})327 2698 y(catch\(NumberFor)o(mat)o(Ex)o(ce)o(pt)o(io)o(n)h(e2\))k +({)h(System.err.pri)o(ntl)o(n\()o(e2)o(\);)48 b(})218 +2811 y(return)k(n;)109 2924 y(})109 3037 y(public)g(static)g(void)g +(main\(String[])d(argv\))j({)218 3149 y(int)h(n)h(=)h(readInt\(\);)218 +3262 y(System.out.prin)o(tl)o(n\(")o(Fa)o(cu)o(lt)o(y)48 +b(of)54 b(")g(+)g(n)g(+)g(")h(is)e(")h(+)g(fac\(n\)\);)109 +3375 y(}})146 3631 y Ft(This)23 b(code)f(example)g(typically)h +(compiles)g(to)f(the)g(following)h(chunks)e(of)i(byte)f(code:)0 +3921 y Fg(2.6.1)99 b(Method)25 b(fac)0 4108 y Ff(0:)108 +b(iload_0)0 4221 y(1:)g(ifne)653 b(#8)0 4334 y(4:)108 +b(iconst_1)0 4447 y(5:)g(goto)653 b(#16)0 4560 y(8:)108 +b(iload_0)0 4672 y(9:)g(iload_0)0 4785 y(10:)53 b(iconst_1)0 +4898 y(11:)g(isub)0 5011 y(12:)g(invokestatic)213 b(Faculty.fac)49 +b(\(I\)I)k(\(12\))0 5124 y(15:)g(imul)0 5237 y(16:)g(ireturn)0 +5463 y(LocalVariable\(s)o(ta)o(rt)o(_p)o(c)c(=)54 b(0,)f(length)f(=)i +(16,)f(index)g(=)h(0:int)e(n\))1888 5712 y Fq(8)p eop +%%Page: 9 9 +9 8 bop 146 407 a Ft(The)21 b(method)f Ff(fac)h Ft(has)g(only)g(one)g +(local)i(variable,)g(the)e(ar)n(gument)g Ff(n)p Ft(,)g(stor)n(ed)f(in)i +(slot)f(0.)28 b(This)21 b(variable's)0 520 y(scope)k(ranges)g(fr)n(om)h +(the)g(start)f(of)h(the)f(byte)g(code)g(sequence)g(to)g(the)g(very)h +(end.)37 b(If)26 b(the)f(value)i(of)f Ff(n)g Ft(\(stor)n(ed)0 +633 y(in)i(local)h(variable)g(0,)g(i.e.)41 b(the)27 b(value)h(fetched)e +(with)i Ff(iload)p 2148 633 28 4 v 30 w(0)p Ft(\))f(is)h(not)e(equal)i +(to)f(0,)h(the)f Ff(ifne)e Ft(instr)o(uction)0 746 y(branches)20 +b(to)f(the)g(byte)g(code)g(at)h(of)n(fset)f(8,)h(otherwise)e(a)j(1)f +(is)g(pushed)e(onto)g(the)h(operand)g(stack)g(and)h(the)f(con-)0 +858 y(tr)n(ol)24 b(\003ow)h(branches)f(to)g(the)f(\002nal)i(r)n(eturn.) +33 b(For)23 b(ease)h(of)g(r)n(eading,)g(the)g(of)n(fsets)f(of)h(the)g +(branch)h(instr)o(uctions,)0 971 y(which)e(ar)n(e)g(actually)h(r)n +(elative,)f(ar)n(e)g(displayed)f(as)g(absolute)h(addr)n(esses)d(in)j +(these)e(examples.)146 1084 y(If)27 b(r)n(ecursion)f(has)g(to)g +(continue,)h(the)f(ar)n(guments)f(for)i(the)e(multiplication)j(\()p +Ff(n)f Ft(and)f Ff(fac\(n)53 b(-)h(1\))p Ft(\))26 b(ar)n(e)0 +1197 y(evaluated)21 b(and)g(the)f(r)n(esults)g(pushed)f(onto)h(the)g +(operand)f(stack.)27 b(After)20 b(the)h(multiplication)h(operation)e +(has)0 1310 y(been)i(performed)f(the)h(function)h(r)n(eturns)e(the)h +(computed)f(value)i(fr)n(om)g(the)f(top)g(of)h(the)e(stack.)0 +1569 y Fg(2.6.2)99 b(Method)25 b(readInt)0 1745 y Ff(0:)108 +b(sipush)434 b(4711)0 1858 y(3:)108 b(istore_0)0 1971 +y(4:)g(getstatic)269 b(java.lang.Syst)o(em.)o(ou)o(t)48 +b(Ljava/io/PrintS)o(tre)o(am)o(;)0 2084 y(7:)108 b(ldc)599 +b("Please)51 b(enter)h(a)j(number>)c(")0 2197 y(9:)108 +b(invokevirtual)49 b(java.io.PrintS)o(tre)o(am)o(.p)o(ri)o(nt)f +(\(Ljava/lang/Str)o(in)o(g;)o(\)V)0 2310 y(12:)53 b(getstatic)269 +b(Faculty.in)50 b(Ljava/io/Buffe)o(red)o(Re)o(ad)o(er)o(;)0 +2423 y(15:)j(invokevirtual)c(java.io.Buffer)o(edR)o(ea)o(de)o(r.)o(re)o +(adL)o(in)o(e)f(\(\)Ljava/lang/St)o(rin)o(g;)0 2536 y(18:)53 +b(invokestatic)104 b(java.lang.Inte)o(ger)o(.p)o(ar)o(se)o(In)o(t)49 +b(\(Ljava/lang/St)o(ri)o(ng)o(;\))o(I)0 2649 y(21:)k(istore_0)0 +2762 y(22:)g(goto)544 b(#44)0 2875 y(25:)53 b(astore_1)0 +2987 y(26:)g(getstatic)269 b(java.lang.Syst)o(em.)o(er)o(r)48 +b(Ljava/io/PrintS)o(tre)o(am)o(;)0 3100 y(29:)53 b(aload_1)0 +3213 y(30:)g(invokevirtual)c(java.io.PrintS)o(tre)o(am)o(.p)o(ri)o(nt)o +(ln)f(\(Ljava/lang/Obj)o(ec)o(t;)o(\)V)0 3326 y(33:)53 +b(goto)544 b(#44)0 3439 y(36:)53 b(astore_1)0 3552 y(37:)g(getstatic) +269 b(java.lang.Syst)o(em.)o(er)o(r)48 b(Ljava/io/PrintS)o(tre)o(am)o +(;)0 3665 y(40:)53 b(aload_1)0 3778 y(41:)g(invokevirtual)c +(java.io.PrintS)o(tre)o(am)o(.p)o(ri)o(nt)o(ln)f(\(Ljava/lang/Obj)o(ec) +o(t;)o(\)V)0 3891 y(44:)53 b(iload_0)0 4004 y(45:)g(ireturn)0 +4229 y(Exception)d(handler\(s\))g(=)0 4342 y(From)216 +b(To)327 b(Handler)51 b(Type)0 4455 y(4)381 b(22)327 +b(25)f(java.io.IOExcep)o(ti)o(on)o(\(6\))0 4568 y(4)381 +b(22)327 b(36)f(NumberFormatExc)o(ep)o(ti)o(on\()o(10)o(\))146 +4785 y Ft(First)34 b(the)g(local)j(variable)f Ff(n)f +Ft(\(in)g(slot)g(0\))g(is)g(initialized)i(to)d(the)g(value)h(4711.)67 +b(The)34 b(next)g(instr)o(uction,)0 4898 y Ff(getstatic)p +Ft(,)f(loads)i(the)f(static)g Ff(System.out)d Ft(\002eld)j(onto)f(the)h +(stack.)64 b(Then)34 b(a)h(string)e(is)i(loaded)f(and)0 +5011 y(printed,)21 b(a)i(number)g(r)n(ead)f(fr)n(om)h(the)f(standar)n +(d)g(input)h(and)f(assigned)f(to)h Ff(n)p Ft(.)146 5124 +y(If)g(one)f(of)h(the)f(called)h(methods)e(\()p Ff(readLine\(\))e +Ft(and)k Ff(parseInt\(\))p Ft(\))17 b(thr)n(ows)k(an)h(exception,)f +(the)f(Java)0 5237 y(V)-5 b(irtual)26 b(Machine)h(calls)h(one)d(of)h +(the)f(declar)n(ed)h(exception)f(handlers,)h(depending)e(on)h(the)g +(type)g(of)h(the)f(ex-)0 5350 y(ception.)36 b(The)24 +b Ff(try)p Ft(-clause)h(itself)h(does)e(not)g(pr)n(oduce)h(any)g(code,) +g(it)h(mer)n(ely)f(de\002nes)f(the)h(range)g(in)h(which)0 +5463 y(the)e(following)h(handlers)f(ar)n(e)h(active.)35 +b(In)24 b(the)g(example)g(the)g(speci\002ed)g(sour)n(ce)g(code)g(ar)n +(ea)h(maps)g(to)f(a)h(byte)1888 5712 y Fq(9)p eop +%%Page: 10 10 +10 9 bop 0 407 a Ft(code)23 b(ar)n(ea)h(ranging)f(fr)n(om)h(of)n(fset)f +(4)h(\(inclusive\))h(to)e(22)h(\(exclusive\).)31 b(If)24 +b(no)f(exception)f(has)h(occurr)n(ed)g(\(\223nor)n(-)0 +520 y(mal\224)i(execution)e(\003ow\))h(the)f Ff(goto)f +Ft(instr)o(uctions)h(branch)i(behind)e(the)g(handler)g(code.)31 +b(Ther)n(e)23 b(the)g(value)h(of)0 633 y Ff(n)e Ft(is)h(loaded)f(and)h +(r)n(eturned.)146 750 y(For)e(example)g(the)f(handler)h(for)g +Ff(java.io.IOExcep)o(ti)o(on)15 b Ft(starts)20 b(at)h(of)n(fset)g(25.) +28 b(It)20 b(simply)i(prints)e(the)0 863 y(err)n(or)i(and)h(branches)f +(back)i(to)e(the)f(normal)j(execution)d(\003ow)-8 b(,)22 +b(i.e.)28 b(as)23 b(if)g(no)f(exception)g(had)g(occurr)n(ed.)0 +1223 y Fr(3)143 b(The)35 b(BCEL)g(API)0 1443 y Ft(The)25 +b Fe(BCEL)j Ft(API)d(abstracts)h(fr)n(om)g(the)f(concr)n(ete)h(cir)n +(cumstances)g(of)g(the)f(Java)j(V)-5 b(irtual)26 b(Machine)h(and)f(how) +0 1556 y(to)c(r)n(ead)h(and)f(write)g(binary)i(Java)g(class)f(\002les.) +k(The)22 b(API)g(mainly)i(consists)d(of)i(thr)n(ee)f(parts:)127 +1795 y(1.)49 b(A)26 b(package)f(that)h(contains)g(classes)g(that)g +(describe)f(\223static\224)i(constraints)e(of)h(class)h(\002les,)f +(i.e.,)g(r)n(e\003ect)244 1908 y(the)g(class)h(\002le)f(format)h(and)g +(is)f(not)g(intended)f(for)h(byte)g(code)g(modi\002cations.)39 +b(The)26 b(classes)g(may)h(be)244 2021 y(used)e(to)h(r)n(ead)g(and)h +(write)f(class)g(\002les)h(fr)n(om)g(or)f(to)g(a)h(\002le.)39 +b(This)26 b(is)h(useful)f(especially)g(for)h(analyzing)244 +2134 y(Java)34 b(classes)f(without)e(having)j(the)e(sour)n(ce)g +(\002les)g(at)h(hand.)59 b(The)32 b(main)i(data)f(str)o(uctur)n(e)e(is) +i(called)244 2247 y Ff(JavaClass)19 b Ft(which)k(contains)f(methods,)f +(\002elds,)g(etc..)127 2453 y(2.)49 b(A)23 b(package)h(to)f +(dynamically)i(generate)d(or)h(modify)h Ff(JavaClass)19 +b Ft(objects.)31 b(It)23 b(may)h(be)g(used)e(e.g.)30 +b(to)244 2565 y(insert)20 b(analysis)i(code,)e(to)h(strip)g +(unnecessary)e(information)j(fr)n(om)g(class)f(\002les,)g(or)g(to)g +(implement)g(the)244 2678 y(code)h(generator)f(back-end)h(of)h(a)g +(Java)h(compiler)-7 b(.)127 2884 y(3.)49 b(V)-8 b(arious)21 +b(code)g(examples)h(and)g(utilities)g(like)g(a)h(class)f(\002le)g +(viewer)-7 b(,)22 b(a)h(tool)e(to)h(convert)f(class)i(\002les)e(into) +244 2997 y(HTML,)g(and)i(a)g(converter)f(fr)n(om)h(class)g(\002les)f +(to)g(the)g(Jasmin)i(assembly)e(language)g([MD97)r(].)0 +3313 y Fm(3.1)119 b(JavaClass)0 3499 y Ft(The)16 b(\223static\224)j +(component)d(of)h(the)f Fe(BCEL)i Ft(API)e(r)n(esides)g(in)i(the)e +(package)h Ff(de.fub.bytecode)o(.c)o(la)o(ss)o(fi)o(le)0 +3612 y Ft(and)22 b(r)n(epr)n(esents)e(class)i(\002les.)27 +b(All)c(of)f(the)f(binary)i(components)d(and)i(data)g(str)o(uctur)n(es) +f(declar)n(ed)g(in)i(the)e(JVM)0 3725 y(speci\002cation)27 +b([L)-8 b(Y97])26 b(and)h(described)e(in)i(section)e(2)i(ar)n(e)g +(mapped)f(to)g(classes.)38 b(Figur)n(e)26 b(3)h(shows)e(an)i(UML)0 +3837 y(diagram)34 b(of)f(the)g(hierar)n(chy)g(of)h(classes)f(of)g(the)f +Fe(BCEL)k Ft(API.)c(Figur)n(e)h(8)h(in)f(the)g(appendix)f(also)i(shows) +e(a)0 3950 y(detailed)22 b(diagram)h(of)g(the)f Ff(ConstantPool)17 +b Ft(components.)146 4068 y(The)23 b(top-level)g(data)g(str)o(uctur)n +(e)g(is)g Ff(JavaClass)p Ft(,)c(which)24 b(in)g(most)f(cases)g(is)g(cr) +n(eated)g(by)g(a)h Ff(ClassPar-)0 4181 y(ser)d Ft(object)g(that)h(is)g +(capable)h(of)f(parsing)f(binary)i(class)f(\002les.)27 +b(A)22 b Ff(JavaClass)c Ft(object)k(basically)h(consists)e(of)0 +4294 y(\002elds,)h(methods,)e(symbolic)j(r)n(efer)n(ences)f(to)g(the)g +(super)f(class)i(and)g(to)f(the)f(implemented)h(interfaces.)146 +4411 y(The)c(constant)f(pool)g(serves)g(as)h(some)f(kind)g(of)h +(central)h(r)n(epository)c(and)j(is)g(thus)f(of)h(outstanding)e(impor)n +(-)0 4524 y(tance)29 b(for)g(all)h(components.)45 b Ff(ConstantPool)24 +b Ft(objects)k(contain)i(an)f(array)h(of)f(\002xed)f(size)h(of)g +Ff(Constant)0 4637 y Ft(entries,)34 b(which)g(may)f(be)g(r)n(etrieved)f +(via)i(the)f Ff(getConstant\(\))27 b Ft(method)32 b(taking)g(an)i +(integer)d(index)i(as)0 4750 y(ar)n(gument.)58 b(Indexes)31 +b(to)h(the)h(constant)f(pool)g(may)h(be)g(contained)g(in)g(instr)o +(uctions)f(as)i(well)f(as)g(in)g(other)0 4863 y(components)21 +b(of)h(a)i(class)f(\002le)f(and)h(in)g(constant)f(pool)g(entries)f +(themselves.)146 4980 y(Methods)j(and)i(\002elds)f(contain)h(a)g +(signatur)n(e,)g(symbolically)h(de\002ning)e(their)g(types.)35 +b(Access)25 b(\003ags)h(like)0 5093 y Ff(public)52 b(static)g(final)26 +b Ft(occur)i(in)h(several)f(places)h(and)f(ar)n(e)h(encoded)d(by)j(an)f +(integer)f(bit)i(mask,)g(e.g.)0 5206 y Ff(public)52 b(static)g(final)20 +b Ft(matches)j(to)f(the)f(Java)k(expr)n(ession)109 5463 +y Ff(int)53 b(access_flags)c(=)54 b(ACC_PUBLIC)c(|)55 +b(ACC_STATIC)50 b(|)k(ACC_FINAL;)1863 5712 y Fq(10)p +eop +%%Page: 11 11 +11 10 bop 570 5113 a @beginspecial 13 @llx 12 @lly 471 +@urx 830 @ury 3221 @rwi @setspecial +%%BeginDocument: eps/javaclass.eps +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:45:7 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 471 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1233.763 -187.599 translate +90 rotate +1.782 1.782 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 712 1406 246 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 958 1405 M 711 1405 I 711 1499 I 958 1499 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S1C F0 [28.75 0 0 -28.75 0 0 ] mFS +F0S1C Ji +735 1441 M (ExceptionTable)[19 13 15 16 16 8 7 16 16 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 958 1456 M 711 1456 I 711 1499 I 958 1499 I C +K +N 958 1473 M 711 1473 I 711 1499 I 958 1499 I C +K +: N 1484 1418 275 93 rp C +1 1 0.801 1 scol L ; N 1759 1417 M 1483 1417 I 1483 1511 I 1759 1511 I C +K +0 0 0 1 scol 1505 1453 M (LineNumberTable)[16 7 16 16 21 16 25 16 16 10 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 1759 1469 M 1483 1469 I 1483 1511 I 1759 1511 I C +K +N 1759 1485 M 1483 1485 I 1483 1511 I 1759 1511 I C +K +: N 1039 1411 318 253 rp C +1 1 0.801 1 scol L ; N 1357 1410 M 1038 1410 I 1038 1664 I 1357 1664 I C +K +0 0 0 1 scol 1163 1446 M (Code)[21 16 16 0]xS +0.602 0 0.199 1 scol N 1357 1462 M 1038 1462 I 1038 1664 I 1357 1664 I C +K +N 1357 1578 M 1038 1578 I 1038 1664 I 1357 1664 I C +K +0 0 0 1 scol 1083 1493 M (max_stack : int)[25 16 13 16 15 8 16 15 14 8 8 8 7 16 0]xS +1083 1527 M (max_locals : int)[25 16 13 16 7 16 15 16 7 15 8 8 8 7 16 0]xS +1083 1560 M (exception_handlers)[16 13 15 16 16 8 7 16 16 16 16 16 16 16 7 16 10 0]xS +1083 1626 M (getCode\(\))[16 16 8 21 16 16 16 10 0]xS +0.602 0 0.199 1 scol N 1420 1499 M 1358 1508 I K +N 1358 1508 M 1380 1516 I 1398 1502 I 1377 1494 I 1358 1508 I C +: 1 1 1 1 scol O ; K +N 1420 1499 M 1482 1487 I K +N 1462 1432 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1462 1459 M (1)S +N 1462 1432 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1462 1459 M (1)S +: N 1742 1576 291 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2033 1575 M 1741 1575 I 1741 1669 I 2033 1669 I C +K +0 0 0 1 scol 1762 1611 M (LocalVariableTable)[16 16 15 16 7 19 16 10 7 16 16 7 16 19 16 16 7 0]xS +0.602 0 0.199 1 scol N 2033 1626 M 1741 1626 I 1741 1669 I 2033 1669 I C +K +N 2033 1643 M 1741 1643 I 1741 1669 I 2033 1669 I C +K +N 1549 1580 M 1358 1556 I K +N 1358 1556 M 1380 1547 I 1398 1562 I 1377 1570 I 1358 1556 I C +: 1 1 1 1 scol O ; K +N 1549 1580 M 1740 1603 I K +: N 1709 1625 15 34 rp C +1 1 1 1 scol L ; N 1709 1625 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1709 1652 M (1)S +: N 1709 1625 15 34 rp C +1 1 1 1 scol L ; N 1709 1625 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1709 1652 M (1)S +: N 1573 1128 218 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1791 1127 M 1572 1127 I 1572 1221 I 1791 1221 I C +K +0 0 0 1 scol 1597 1163 M (InnerClasses)[7 16 16 16 10 21 7 16 15 15 16 0]xS +0.602 0 0.199 1 scol N 1791 1178 M 1572 1178 I 1572 1221 I 1791 1221 I C +K +N 1791 1195 M 1572 1195 I 1572 1221 I 1791 1221 I C +K +: N 1855 1128 186 93 rp C +1 1 0.801 1 scol L ; N 2041 1127 M 1854 1127 I 1854 1221 I 2041 1221 I C +K +0 0 0 1 scol 1878 1163 M (SourceFile)[19 16 16 10 15 16 18 7 7 0]xS +0.602 0 0.199 1 scol N 2041 1178 M 1854 1178 I 1854 1221 I 2041 1221 I C +K +N 2041 1195 M 1854 1195 I 1854 1221 I 2041 1221 I C +K +: N 450 1406 190 93 rp C +1 1 0.801 1 scol L ; N 640 1405 M 449 1405 I 449 1499 I 640 1499 I C +K +0 0 0 1 scol 470 1441 M (Deprecated)[21 16 16 10 16 15 16 8 16 0]xS +0.602 0 0.199 1 scol N 640 1456 M 449 1456 I 449 1499 I 640 1499 I C +K +N 640 1473 M 449 1473 I 449 1499 I 640 1499 I C +K +: N 2049 1418 161 93 rp C +1 1 0.801 1 scol L ; N 2210 1417 M 2048 1417 I 2048 1511 I 2210 1511 I C +K +0 0 0 1 scol 2069 1453 M (Unknown)[21 16 14 16 16 21 0]xS +0.602 0 0.199 1 scol N 2210 1469 M 2048 1469 I 2048 1511 I 2210 1511 I C +K +N 2210 1485 M 2048 1485 I 2048 1511 I 2210 1511 I C +K +: N 2105 1128 171 93 rp C +1 1 0.801 1 scol L ; N 2276 1127 M 2104 1127 I 2104 1221 I 2276 1221 I C +K +0 0 0 1 scol 2131 1163 M (Synthetic)[19 13 16 8 16 16 8 7 0]xS +0.602 0 0.199 1 scol N 2276 1178 M 2104 1178 I 2104 1221 I 2276 1221 I C +K +N 2276 1195 M 2104 1195 I 2104 1221 I 2276 1221 I C +K +: N 521 1128 240 93 rp C +1 1 0.801 1 scol L ; N 761 1127 M 520 1127 I 520 1221 I 761 1221 I C +K +0 0 0 1 scol 546 1163 M (ConstantValue)[21 16 16 15 8 16 16 8 19 16 7 16 0]xS +0.602 0 0.199 1 scol N 761 1177 M 520 1177 I 520 1221 I 761 1221 I C +K +N 761 1193 M 520 1193 I 520 1221 I 761 1221 I C +K +: N 491 628 204 125 rp C +1 1 0.801 1 scol L ; N 695 627 M 490 627 I 490 753 I 695 753 I C +K +0.496 0.496 0.496 1 scol 1 Lj 1 Lc 12 Lw solid N 495 748 M 691 748 I 691 632 I : 0.754 0.754 +S K +; 0 0 0 1 scol 513 663 M (ClassParser)[21 7 16 15 15 19 16 10 15 16 0]xS +0.602 0 0.199 1 scol 1 Lw solid N 695 676 M 490 676 I 490 753 I 695 753 I C +K +N 695 693 M 490 693 I 490 753 I 695 753 I C +K +0 0 0 1 scol 535 741 M (parse\(\))[16 16 10 15 16 10 0]xS +: N 1168 1116 157 93 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1325 1115 M 1167 1115 I 1167 1209 I 1325 1209 I C +K +0 0 0 1 scol 1192 1151 M (Attribute)[19 8 8 10 7 16 16 8 0]xS +0.602 0 0.199 1 scol N 1325 1164 M 1167 1164 I 1167 1209 I 1325 1209 I C +K +N 1325 1181 M 1167 1181 I 1167 1209 I 1325 1209 I C +K +N 1225 1279 M 1225 1210 I K +N 528 1279 M 2187 1279 I K +N 1225 1210 M 1242 1255 I 1209 1255 I C +: 1 1 1 1 scol O ; K +N 1190 1410 M 1190 1279 I K +N 1091 1329 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1091 1356 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1602 1417 M 1602 1279 I K +N 1479 1381 251 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1479 1408 M (<>)[17 17 21 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1941 1222 M 1941 1279 I K +N 1823 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1823 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 840 1405 M 840 1279 I K +N 728 1326 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 728 1353 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 2132 1417 M 2132 1279 I K +N 528 1405 M 528 1279 I K +N 416 1326 276 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 416 1353 M (<>)[17 17 23 16 8 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1870 1575 M 1870 1279 I K +N 1748 1523 250 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1748 1550 M (<>)[17 17 21 16 16 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 1673 1222 M 1673 1279 I K +N 1541 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1541 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 2187 1222 M 2187 1279 I K +N 2068 1234 255 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 2068 1261 M (<>)[17 17 21 7 16 15 15 8 16 8 8 10 7 16 16 8 16 17 0]xS +0.602 0 0.199 1 scol N 638 1222 M 638 1279 I K +N 536 1233 245 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 536 1260 M (<>)[17 17 18 7 16 7 16 8 16 8 8 10 7 16 16 8 16 17 0]xS +: N 1130 845 233 126 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1363 844 M 1129 844 I 1129 971 I 1363 971 I C +K +0 0 0 1 scol +%%IncludeResource: font Helvetica-Oblique +F /F1 0 /256 T /Helvetica-Oblique mF +/F1S1C F1 [28.75 0 0 -28.75 0 0 ] mFS +F1S1C Ji +1150 880 M (FieldOrMethod)[18 7 16 7 16 23 10 24 16 8 16 16 0]xS +0.602 0 0.199 1 scol N 1363 894 M 1129 894 I 1129 971 I 1363 971 I C +K +N 1363 911 M 1129 911 I 1129 971 I 1363 971 I C +K +0 0 0 1 scol 1174 960 M (getName\(\))[16 16 8 21 16 24 16 10 0]xS +: N 571 845 214 126 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 785 844 M 570 844 I 570 971 I 785 971 I C +K +0 0 0 1 scol 594 880 M (AccessFlags)[19 15 15 16 15 15 18 7 16 16 0]xS +0.602 0 0.199 1 scol N 785 894 M 570 894 I 570 971 I 785 971 I C +K +N 785 911 M 570 911 I 570 971 I 785 971 I C +K +0 0 0 1 scol 614 960 M (isPublic\(\))[7 15 19 16 16 7 7 15 10 0]xS +0.602 0 0.199 1 scol N 1128 908 M 786 908 I K +N 786 908 M 831 925 I 831 891 I C +: 1 1 1 1 scol O ; K +N 1237 1043 M 1237 972 I K +N 992 1043 M 1497 1043 I K +N 1237 972 M 1253 1017 I 1220 1017 I C +: 1 1 1 1 scol O ; K +: N 1494 1023 134 84 rp C +1 1 0.801 1 scol L ; N 1628 1022 M 1493 1022 I 1493 1107 I 1628 1107 I C +K +0 0 0 1 scol F0S1C Ji +1513 1058 M (Method)[23 16 8 16 16 0]xS +0.602 0 0.199 1 scol N 1628 1074 M 1493 1074 I 1493 1107 I 1628 1107 I C +K +N 1628 1090 M 1493 1090 I 1493 1107 I 1628 1107 I C +K +N 1409 1111 M 1492 1085 I K +N 1488 1110 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1488 1137 M (1)S +0.602 0 0.199 1 scol N 1492 1085 M 1476 1102 I 1454 1097 I 1470 1080 I 1492 1085 I C +: 1 1 1 1 scol O ; K +N 1409 1111 M 1326 1136 I K +N 1341 1157 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1341 1184 M (*)S +N 1488 1110 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1488 1137 M (1)S +N 1341 1157 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1341 1184 M (*)S +0.602 0 0.199 1 scol N 1497 1028 M 1497 1043 I K +: N 1734 802 235 139 rp C +1 1 0.801 1 scol L ; N 1969 801 M 1733 801 I 1733 941 I 1969 941 I C +K +0 0 0 1 scol 1764 837 M (ConstantPool)[21 16 16 15 8 16 16 8 19 16 16 0]xS +0.602 0 0.199 1 scol N 1969 853 M 1733 853 I 1733 941 I 1969 941 I C +K +N 1969 869 M 1733 869 I 1733 941 I 1969 941 I C +K +0 0 0 1 scol 1777 918 M (getConstant\(\))[16 16 8 21 16 16 15 8 16 16 8 10 0]xS +: N 1088 610 317 160 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1405 609 M 1087 609 I 1087 770 I 1405 770 I C +K +0 0 0 1 scol 1179 645 M (JavaClass)[15 16 13 16 21 7 16 15 0]xS +0.602 0 0.199 1 scol N 1405 659 M 1087 659 I 1087 770 I 1405 770 I C +K +N 1405 676 M 1087 676 I 1087 770 I 1405 770 I C +K +0 0 0 1 scol 1131 724 M (getInterfaceNames\(\))[16 16 8 7 16 8 16 10 8 16 15 16 21 16 25 16 15 10 0]xS +1131 757 M (getSuperclassName\(\))[16 16 8 19 16 16 16 10 15 7 16 15 15 21 16 25 16 10 0]xS +0.602 0 0.199 1 scol N 1419 896 M 1314 771 I K +N 1287 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1287 821 M (1)S +0.602 0 0.199 1 scol N 1314 771 M 1336 779 I 1340 802 I 1318 794 I 1314 771 I C +: 1 1 1 1 scol O ; K +N 1419 896 M 1524 1021 I K +N 1539 966 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1539 993 M (*)S +N 1287 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1287 821 M (1)S +N 1539 966 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1539 993 M (*)S +1 1 1 1 scol [ 72 24 ] 0 sd N 696 690 M 1086 690 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 696 690 M 1086 690 I K +3 Lw solid N 1086 690 M 1059 701 I : 0.754 0.754 +S K +; N 1086 690 M 1059 679 I : 0.754 0.754 +S K +; N 847 641 164 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 847 668 M (<>)[17 17 15 10 16 16 8 16 15 17 0]xS +0.602 0 0.199 1 scol 1 Lw solid N 1569 786 M 1406 737 I K +N 1569 786 M 1732 835 I K +N 1086 751 M 786 866 I K +N 786 866 M 834 866 I 822 834 I C +: 1 1 1 1 scol O ; K +: N 865 1023 134 84 rp C +1 1 0.801 1 scol L ; N 999 1022 M 864 1022 I 864 1107 I 999 1107 I C +K +0 0 0 1 scol 899 1058 M (Field)[18 7 16 7 0]xS +0.602 0 0.199 1 scol N 999 1072 M 864 1072 I 864 1107 I 999 1107 I C +K +N 999 1089 M 864 1089 I 864 1107 I 999 1107 I C +K +N 1083 1111 M 1000 1086 I K +N 990 1111 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 990 1138 M (1)S +0.602 0 0.199 1 scol N 1000 1086 M 1023 1081 I 1039 1098 I 1017 1102 I 1000 1086 I C +: 1 1 1 1 scol O ; K +N 1083 1111 M 1166 1136 I K +N 1165 1079 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1165 1106 M (*)S +N 990 1111 16 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 990 1138 M (1)S +N 1165 1079 11 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1165 1106 M (*)S +0.602 0 0.199 1 scol N 992 1067 M 992 1043 I K +N 1072 896 M 1177 771 I K +N 1190 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1190 821 M (1)S +0.602 0 0.199 1 scol N 1177 771 M 1173 794 I 1150 802 I 1155 779 I 1177 771 I C +: 1 1 1 1 scol O ; K +N 1072 896 M 967 1021 I K +N 1004 1018 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1004 1045 M (*)S +N 1190 794 16 33 rp C +1 1 1 1 scol L 0 0 0 1 scol 1190 821 M (1)S +N 1004 1018 11 34 rp C +1 1 1 1 scol L 0 0 0 1 scol 1004 1045 M (*)S +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica-Oblique +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore + +%%EndDocument + @endspecial 990 5316 a Fq(Figur)n(e)26 b(3:)31 b(UML)24 +b(diagram)i(for)f(the)h Fo(BCEL)i Fq(API)1863 5712 y(11)p +eop +%%Page: 12 12 +12 11 bop 146 407 a Ft(As)17 b(mentioned)f(in)h(section)g(2.1)g(alr)n +(eady)-10 b(,)19 b(several)e(components)e(may)j(contain)f +Fs(attribute)i Ft(objects:)25 b(classes,)0 520 y(\002elds,)43 +b(methods,)f(and)e Ff(Code)e Ft(objects)h(\(intr)n(oduced)g(in)h +(section)f(2.3\).)81 b(The)39 b(latter)g(is)h(an)g(attribute)g(it-)0 +633 y(self)f(that)h(contains)f(the)g(actual)h(byte)f(code)f(array)-10 +b(,)44 b(the)39 b(maximum)i(stack)e(size,)k(the)c(number)g(of)h(local)0 +746 y(variables,)c(a)d(table)f(of)h(handled)e(exceptions,)i(and)f(some) +g(optional)g(debugging)e(information)j(coded)e(as)0 858 +y Ff(LineNumberTable)23 b Ft(and)29 b Ff(LocalVariableTa)o(bl)o(e)24 +b Ft(attributes.)47 b(Attributes)27 b(ar)n(e)j(in)g(general)f +(speci\002c)0 971 y(to)c(some)g(data)g(str)o(uctur)n(e,)g(i.e.)37 +b(no)25 b(two)g(components)f(shar)n(e)h(the)g(same)g(kind)h(of)f +(attribute,)h(though)e(this)h(is)0 1084 y(not)h(explicitly)h +(forbidden.)40 b(In)26 b(the)g(\002gur)n(e)g(the)g Ff(Attribute)d +Ft(classes)j(ar)n(e)i(marked)e(with)g(the)g(component)0 +1197 y(they)21 b(belong)h(to.)0 1482 y Fm(3.2)119 b(Class)30 +b(repository)0 1659 y Ft(Using)35 b(the)g(pr)n(ovided)g +Ff(Repository)c Ft(class,)39 b(r)n(eading)d(class)g(\002les)g(into)f(a) +h Ff(JavaClass)c Ft(object)k(is)g(quite)0 1772 y(simple:)109 +1970 y Ff(JavaClass)51 b(clazz)h(=)i(Repository.look)o(up)o(Cl)o(as)o +(s\()o("ja)o(va)o(.l)o(an)o(g.)o(Str)o(in)o(g")o(\);)146 +2168 y Ft(The)19 b(r)n(epository)e(also)i(contains)g(methods)f(pr)n +(oviding)h(the)f(dynamic)i(equivalent)f(of)g(the)g Ff(instanceof)0 +2281 y Ft(operator)-7 b(,)21 b(and)i(other)e(useful)h(r)n(outines:)109 +2479 y Ff(if\(Repository.i)o(ns)o(ta)o(nce)o(Of)o(\(c)o(la)o(zz)o(,)49 +b(super_class\))g({)218 2592 y(...)109 2705 y(})0 2961 +y Fg(3.2.1)99 b(Accessing)25 b(class)h(\002le)f(data)0 +3138 y Ft(Information)39 b(within)g(the)f(class)i(\002le)f(components)e +(may)j(be)e(accessed)g(like)i(Java)g(Beans)e(via)j(intuitive)0 +3251 y(set/get)19 b(methods.)26 b(All)c(of)g(them)f(also)h(de\002ne)e +(a)i Ff(toString\(\))17 b Ft(method)j(so)h(that)h(implementing)f(a)h +(simple)0 3364 y(class)h(viewer)f(is)h(very)f(easy)-10 +b(.)27 b(In)22 b(fact)i(all)g(of)f(the)e(examples)i(used)e(her)n(e)h +(have)h(been)f(pr)n(oduced)f(this)h(way:)109 3562 y Ff(System.out.prin) +o(tl)o(n\()o(cla)o(zz)o(\);)109 3675 y(printCode\(clazz)o(.g)o(et)o +(Met)o(ho)o(ds)o(\(\))o(\);)109 3788 y(...)109 3901 y(public)52 +b(static)g(void)g(printCode\(Method)o([])c(methods\))j({)218 +4014 y(for\(int)h(i=0;)g(i)i(<)g(methods.length;)48 b(i++\))53 +b({)327 4127 y(System.out.prin)o(tln)o(\(m)o(et)o(ho)o(ds)o([i])o(\);) +327 4352 y(Code)g(code)g(=)h(methods[i].get)o(Cod)o(e\()o(\);)327 +4465 y(if\(code)e(!=)h(null\))g(//)g(Non-abstract)c(method)436 +4578 y(System.out.print)o(ln)o(\(c)o(od)o(e\))o(;)218 +4691 y(})109 4804 y(})0 5060 y Fg(3.2.2)99 b(Analyzing)25 +b(class)g(data)0 5237 y Ft(Last)g(but)h(not)f(least,)h +Fe(BCEL)i Ft(supports)23 b(the)i Fs(V)-7 b(isitor)28 +b Ft(design)d(pattern)g([GHJV95)q(],)h(so)g(one)f(can)i(write)e +(visitor)0 5350 y(objects)e(to)h(traverse)f(and)h(analyze)h(the)e +(contents)f(of)i(a)h(class)f(\002le.)32 b(Included)23 +b(in)h(the)g(distribution)f(is)h(a)h(class)0 5463 y Ff(JasminVisitor)17 +b Ft(that)22 b(converts)g(class)h(\002les)f(into)h(the)e(Jasmin)j +(assembler)e(language)h([MD97)q(].)1863 5712 y Fq(12)p +eop +%%Page: 13 13 +13 12 bop 0 407 a Fm(3.3)119 b(ClassGen)0 587 y Ft(This)26 +b(part)g(of)g(the)g(API)g(\(package)g Ff(de.fub.bytecod)o(e.)o(gen)o +(er)o(ic)o Ft(\))21 b(supplies)k(an)i(abstraction)f(level)h(for)0 +700 y(cr)n(eating)c(or)f(transforming)g(class)h(\002les)f(dynamically) +-10 b(.)29 b(It)22 b(makes)g(the)g(static)g(constraints)g(of)g(Java)j +(class)d(\002les)0 813 y(like)35 b(the)e(har)n(d-coded)h(byte)f(code)h +(addr)n(esses)e(generic.)63 b(The)34 b(generic)f(constant)h(pool,)j +(for)d(example,)j(is)0 926 y(implemented)23 b(by)h(the)f(class)h +Ff(ConstantPoolGen)18 b Ft(which)24 b(of)n(fers)g(methods)e(for)i +(adding)f(dif)n(fer)n(ent)h(types)0 1039 y(of)h(constants.)34 +b(Accor)n(dingly)-10 b(,)25 b Ff(ClassGen)d Ft(of)n(fers)i(an)i +(interface)f(to)f(add)h(methods,)f(\002elds,)g(and)h(attributes.)0 +1152 y(Figur)n(e)d(4)h(gives)f(an)h(overview)g(of)f(this)h(part)f(of)h +(the)e(API.)0 1422 y Fg(3.3.1)99 b(T)-9 b(ypes)0 1603 +y Ft(W)h(e)28 b(abstract)i(fr)n(om)f(the)g(concr)n(ete)f(details)h(of)g +(the)g(type)e(signatur)n(e)i(syntax)f(\(see)g(2.5\))i(by)f(intr)n +(oducing)g(the)0 1716 y Ff(Type)23 b Ft(class,)k(which)e(is)h(used,)e +(for)h(example,)g(by)g(methods)f(to)g(de\002ne)g(their)h(r)n(eturn)f +(and)i(ar)n(gument)e(types.)0 1829 y(Concr)n(ete)j(sub-classes)f(ar)n +(e)i Ff(BasicType)p Ft(,)c Ff(ObjectType)p Ft(,)f(and)k +Ff(ArrayType)d Ft(which)j(consists)f(of)h(the)g(el-)0 +1942 y(ement)33 b(type)f(and)i(the)f(number)g(of)h(dimensions.)60 +b(For)33 b(commonly)h(used)f(types)e(the)i(class)i(of)n(fers)e(some)0 +2055 y(pr)n(ede\002ned)23 b(constants.)36 b(For)25 b(example)h(the)f +(method)f(signatur)n(e)h(of)h(the)f Ff(main)f Ft(method)h(as)g(shown)g +(in)h(sec-)0 2168 y(tion)c(2.5)i(is)e(r)n(epr)n(esented)e(by:)109 +2403 y Ff(Type)162 b(return_type)49 b(=)55 b(Type.VOID;)109 +2516 y(Type[])d(arg_types)159 b(=)55 b(new)e(Type[])f({)i(new)f +(ArrayType\(Type)o(.ST)o(RI)o(NG)o(,)48 b(1\))54 b(};)146 +2750 y(Type)18 b Ft(also)i(contains)g(methods)e(to)h(convert)h(types)d +(into)j(textual)f(signatur)n(es)g(and)h(vice)g(versa.)27 +b(The)19 b(sub-)0 2863 y(classes)24 b(contain)g(implementations)g(of)g +(the)f(r)n(outines)g(and)h(constraints)f(speci\002ed)g(by)h(the)f(Java) +j(Language)0 2976 y(Speci\002cation)d([GJS96)q(].)0 3247 +y Fg(3.3.2)99 b(Generic)24 b(\002elds)h(and)g(methods)0 +3427 y Ft(Fields)f(ar)n(e)i(r)n(epr)n(esented)c(by)j +Ff(FieldGen)c Ft(objects,)k(which)g(may)h(be)e(fr)n(eely)h(modi\002ed)f +(by)h(the)f(user)-7 b(.)34 b(If)25 b(they)0 3540 y(have)e(the)g(access) +g(rights)f Ff(static)52 b(final)p Ft(,)20 b(i.e.)29 b(ar)n(e)24 +b(constants)d(and)i(of)g(basic)i(type,)c(they)h(may)h(optionally)0 +3653 y(have)g(an)g(initializing)i(value.)146 3768 y(Generic)d(methods)e +(contain)i(methods)e(to)h(add)h(exceptions)e(the)h(method)f(may)i(thr)n +(ow)-8 b(,)21 b(local)i(variables,)0 3881 y(and)g(exception)e +(handlers.)27 b(The)22 b(latter)g(two)g(ar)n(e)h(r)n(epr)n(esented)c +(by)k(user)n(-con\002gurable)f(objects)g(as)g(well.)29 +b(Be-)0 3994 y(cause)20 b(exception)e(handlers)i(and)f(local)j +(variables)f(contain)f(r)n(efer)n(ences)f(to)g(byte)g(code)h(addr)n +(esses,)d(they)i(also)0 4107 y(take)j(the)g(r)n(ole)h(of)g(an)g +Fs(instruction)h(tar)n(geter)i Ft(in)d(our)f(terminology)-10 +b(.)27 b(Instr)o(uction)22 b(tar)n(geters)f(contain)i(a)g(method)0 +4220 y Ff(updateTarget\(\))i Ft(to)31 b(r)n(edir)n(ect)g(a)h(r)n(efer)n +(ence.)54 b(Generic)32 b(\(non-abstract\))g(methods)d(r)n(efer)i(to)g +Fs(instruction)0 4332 y(lists)g Ft(that)e(consist)f(of)h(instr)o +(uction)g(objects.)47 b(Refer)n(ences)28 b(to)g(byte)g(code)h(addr)n +(esses)e(ar)n(e)i(implemented)f(by)0 4445 y(handles)22 +b(to)g(instr)o(uction)g(objects.)28 b(This)22 b(is)h(explained)f(in)h +(mor)n(e)f(detail)h(in)g(the)f(following)h(sections.)146 +4560 y(The)32 b(maximum)h(stack)f(size)g(needed)e(by)i(the)f(method)g +(and)h(the)f(maximum)j(number)e(of)g(local)i(vari-)0 +4673 y(ables)25 b(used)e(may)i(be)f(set)f(manually)j(or)e(computed)f +(via)j(the)d Ff(setMaxStack\(\))c Ft(and)24 b Ff(setMaxLocals\(\))0 +4786 y Ft(methods)d(automatically)-10 b(.)0 5056 y Fg(3.3.3)99 +b(Instructions)0 5237 y Ft(Modeling)25 b(instr)o(uctions)g(as)h +(objects)f(may)h(look)f(somewhat)g(odd)f(at)i(\002rst)f(sight,)g(but)h +(in)g(fact)h(enables)e(pr)n(o-)0 5350 y(grammers)g(to)f(obtain)i(a)g +(high-level)g(view)f(upon)f(contr)n(ol)i(\003ow)f(without)f(handling)h +(details)g(like)h(concr)n(ete)0 5463 y(byte)c(code)h(of)n(fsets.)29 +b(Instr)o(uctions)22 b(consist)g(of)h(a)h(tag,)f(i.e.)30 +b(an)24 b(opcode,)d(their)i(length)g(in)h(bytes)e(and)h(an)h(of)n(fset) +1863 5712 y Fq(13)p eop +%%Page: 14 14 +14 13 bop 383 5113 a @beginspecial 13 @llx 12 @lly 535 +@urx 830 @ury 3671 @rwi @setspecial +%%BeginDocument: eps/classgen.eps +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:42:13 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 535 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1249.738 -7.476 translate +90 rotate +1.623 1.623 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 234 594 236 124 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 470 593 M 233 593 I 233 718 I 470 718 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S29 F0 [41 0 0 -41 0 0 ] mFS +F0S29 Ji +257 643 M (BasicType)[27 23 20 8 21 26 19 23 0]xS +0.602 0 0.199 1 scol N 470 659 M 233 659 I 233 718 I 470 718 I C +K +N 470 682 M 233 682 I 233 718 I 470 718 I C +K +: N 252 292 360 184 rp C +1 1 0.801 1 scol L ; N 612 291 M 251 291 I 251 476 I 612 476 I C +K +0 0 0 1 scol 326 341 M (ObjectType)[32 23 10 23 21 11 26 19 23 0]xS +0.602 0 0.199 1 scol N 612 357 M 251 357 I 251 476 I 612 476 I C +K +N 612 380 M 251 380 I 251 476 I 612 476 I C +K +0 0 0 1 scol 310 448 M (getClassName\(\))[23 23 11 30 10 23 20 20 30 23 36 23 14 0]xS +: N 699 292 362 184 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1061 291 M 698 291 I 698 476 I 1061 476 I C +K +0 0 0 1 scol 786 341 M (ArrayType)[27 14 14 23 19 26 19 23 0]xS +0.602 0 0.199 1 scol N 1061 357 M 698 357 I 698 476 I 1061 476 I C +K +N 1061 380 M 698 380 I 698 476 I 1061 476 I C +K +0 0 0 1 scol 757 448 M (getDimensions\(\))[23 23 11 30 8 36 23 23 20 8 23 23 20 14 0]xS +: N 532 594 312 124 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 844 593 M 531 593 I 531 718 I 844 718 I C +K +0 0 0 1 scol 546 643 M (ReferenceType)[30 23 12 23 14 23 23 21 23 26 19 23 0]xS +0.602 0 0.199 1 scol N 844 659 M 531 659 I 531 718 I 844 718 I C +K +N 844 682 M 531 682 I 531 718 I 844 718 I C +K +: N 1202 295 284 178 rp C +1 1 0.801 1 scol L ; N 1486 294 M 1201 294 I 1201 473 I 1486 473 I C +K +0 0 0 1 scol +%%IncludeResource: font Helvetica-Oblique +F /F1 0 /256 T /Helvetica-Oblique mF +/F1S29 F1 [41 0 0 -41 0 0 ] mFS +F1S29 Ji +1226 343 M (AccessFlags)[27 21 21 23 21 21 25 9 23 23 0]xS +0.602 0 0.199 1 scol N 1486 360 M 1201 360 I 1201 473 I 1486 473 I C +K +N 1486 383 M 1201 383 I 1201 473 I 1486 473 I C +K +0 0 0 1 scol 1260 450 M (isPublic\(\))[9 21 27 23 23 9 9 21 14 0]xS +0.602 0 0.199 1 scol N 1344 602 M 1344 474 I K +N 1059 602 M 1634 602 I K +N 1344 474 M 1366 534 I 1322 534 I C +: 1 1 1 1 scol O ; K +N 678 500 M 678 593 I K +N 369 500 M 881 500 I K +N 678 593 M 700 533 I 656 533 I C +: 1 1 1 1 scol O ; K +N 369 477 M 369 500 I K +N 881 477 M 881 500 I K +: N 919 683 306 234 rp C +1 1 0.801 1 scol L ; N 1225 682 M 918 682 I 918 917 I 1225 917 I C +K +0 0 0 1 scol F0S29 Ji +988 732 M (FieldGen)[25 8 23 10 23 32 23 0]xS +0.602 0 0.199 1 scol N 1225 748 M 918 748 I 918 917 I 1225 917 I C +K +N 1225 771 M 918 771 I 918 917 I 1225 917 I C +K +0 0 0 1 scol 977 839 M (getField\(\))[23 23 11 25 8 23 10 23 14 0]xS +977 886 M (setInitValue\(\))[20 23 11 10 23 8 11 27 23 10 23 23 14 0]xS +0.602 0 0.199 1 scol N 1059 682 M 1059 602 I K +: N 543 1283 386 122 rp C +1 1 0.801 1 scol L ; N 929 1282 M 542 1282 I 542 1405 I 929 1405 I C +K +0 0 0 1 scol 571 1332 M (LocalVariableGen)[23 23 21 23 10 27 23 14 8 23 23 10 23 32 23 0]xS +0.602 0 0.199 1 scol N 929 1348 M 542 1348 I 542 1405 I 929 1405 I C +K +N 929 1371 M 542 1371 I 542 1405 I 929 1405 I C +K +: N 538 1106 396 124 rp C +1 1 0.801 1 scol L ; N 934 1105 M 537 1105 I 537 1230 I 934 1230 I C +K +0 0 0 1 scol 559 1155 M (CodeExceptionGen)[30 23 23 23 27 18 21 23 23 11 8 23 23 32 23 0]xS +0.602 0 0.199 1 scol N 934 1171 M 537 1171 I 537 1230 I 934 1230 I C +K +N 934 1194 M 537 1194 I 537 1230 I 934 1230 I C +K +: N 351 836 322 184 rp C +1 1 0.801 1 scol L ; N 673 835 M 350 835 I 350 1020 I 673 1020 I C +K +0 0 0 1 scol 466 885 M (Type)[26 19 23 0]xS +0.602 0 0.199 1 scol N 673 901 M 350 901 I 350 1020 I 673 1020 I C +K +N 673 924 M 350 924 I 350 1020 I 673 1020 I C +K +0 0 0 1 scol 409 992 M (getSignature\(\))[23 23 11 27 8 23 23 23 11 23 14 23 14 0]xS +0.602 0 0.199 1 scol N 512 745 M 512 835 I K +N 347 745 M 669 745 I K +N 512 835 M 534 775 I 490 775 I C +: 1 1 1 1 scol O ; K +N 795 862 M 674 889 I K +N 795 862 M 917 833 I K +N 347 719 M 347 745 I K +N 669 719 M 669 745 I K +: N 538 1457 364 126 rp C +1 1 0.801 1 scol L ; N 902 1456 M 537 1456 I 537 1583 I 902 1583 I C +K +0 0 0 1 scol 561 1506 M (BranchInstruction)[27 14 23 23 21 23 10 23 20 11 14 23 21 11 8 23 0]xS +0.602 0 0.199 1 scol N 902 1522 M 537 1522 I 537 1583 I 902 1583 I C +K +N 902 1545 M 537 1545 I 537 1583 I 902 1583 I C +K +: N 1157 1012 342 184 rp C +1 1 0.801 1 scol L ; N 1499 1011 M 1156 1011 I 1156 1196 I 1499 1196 I C +K +0 0 0 1 scol 1221 1061 M (MethodGen)[33 23 11 23 23 23 32 23 0]xS +0.602 0 0.199 1 scol N 1499 1077 M 1156 1077 I 1156 1196 I 1499 1196 I C +K +N 1499 1100 M 1156 1100 I 1156 1196 I 1499 1196 I C +K +0 0 0 1 scol 1215 1168 M (addException\(\))[23 23 23 27 18 21 23 23 11 8 23 23 14 0]xS +0.602 0 0.199 1 scol N 1022 1227 M 1155 1172 I K +N 1155 1172 M 1136 1196 I 1105 1193 I 1124 1168 I 1155 1172 I C +: 1 1 1 1 scol O ; K +N 1022 1227 M 886 1281 I K +N 913 1302 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 913 1340 M (*)S +N 913 1302 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 913 1340 M (*)S +0.602 0 0.199 1 scol N 1045 1134 M 1155 1121 I K +N 1155 1121 M 1130 1139 I 1101 1127 I 1126 1109 I 1155 1121 I C +: 1 1 1 1 scol O ; K +N 1045 1134 M 935 1145 I K +N 934 1068 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 934 1106 M (*)S +N 934 1068 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 934 1106 M (*)S +0.602 0 0.199 1 scol N 914 1014 M 674 962 I K +N 914 1014 M 1155 1066 I K +N 1344 1011 M 1344 602 I K +: N 1751 1012 306 184 rp C +1 1 0.801 1 scol L ; N 2057 1011 M 1750 1011 I 1750 1196 I 2057 1196 I C +K +0 0 0 1 scol 1779 1061 M (InstructionList)[10 23 20 11 14 23 21 11 8 23 23 23 8 20 0]xS +0.602 0 0.199 1 scol N 2057 1077 M 1750 1077 I 1750 1196 I 2057 1196 I C +K +N 2057 1100 M 1750 1100 I 1750 1196 I 2057 1196 I C +K +0 0 0 1 scol 1809 1168 M (append\(\))[23 23 23 23 23 23 14 0]xS +0.602 0 0.199 1 scol N 1624 1104 M 1749 1104 I K +N 1624 1104 M 1500 1104 I K +: N 1201 1313 222 190 rp C +1 1 0.801 1 scol L ; N 1423 1312 M 1200 1312 I 1200 1503 I 1423 1503 I C +K +0 0 0 1 scol 1219 1362 M (Instruction)[10 23 20 11 14 23 21 11 8 23 0]xS +0.602 0 0.199 1 scol N 1423 1378 M 1200 1378 I 1200 1503 I 1423 1503 I C +K +N 1423 1495 M 1200 1495 I 1200 1503 I 1423 1503 I C +K +0 0 0 1 scol 1259 1422 M (tag)[11 23 0]xS +1259 1469 M (length)[10 23 23 23 11 0]xS +0.602 0 0.199 1 scol N 903 1485 M 1199 1429 I K +N 1199 1429 M 1144 1462 I 1136 1418 I C +: 1 1 1 1 scol O ; K +: N 1722 1345 364 126 rp C +1 1 0.801 1 scol L ; N 2086 1344 M 1721 1344 I 1721 1471 I 2086 1471 I C +K +0 0 0 1 scol 1744 1394 M (InstructionHandle)[10 23 20 11 14 23 21 11 8 23 23 30 23 23 23 10 0]xS +0.602 0 0.199 1 scol N 2086 1410 M 1721 1410 I 1721 1471 I 2086 1471 I C +K +N 2086 1433 M 1721 1433 I 1721 1471 I 2086 1471 I C +K +N 1904 1270 M 1904 1197 I K +N 1947 1181 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1947 1219 M (1)S +0.602 0 0.199 1 scol N 1904 1197 M 1919 1224 I 1904 1251 I 1889 1224 I 1904 1197 I C +: 1 1 1 1 scol O ; K +N 1904 1270 M 1904 1343 I K +N 1950 1313 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1950 1351 M (*)S +N 1947 1181 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1947 1219 M (1)S +N 1950 1313 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1950 1351 M (*)S +0.602 0 0.199 1 scol N 1572 1408 M 1424 1408 I K +N 1429 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1429 1477 M (1)S +0.602 0 0.199 1 scol N 1572 1408 M 1720 1408 I K +N 1693 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1693 1477 M (1)S +N 1429 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1429 1477 M (1)S +N 1693 1439 23 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1693 1477 M (1)S +: N 0 1224 384 240 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol : 0 1223 385 242 rc N 384 1223 M -1 1223 I -1 1464 I 384 1464 I C +K +; 0 0 0 1 scol 20 1323 M (InstructionTargeter)[10 23 20 11 14 23 21 11 8 23 23 26 23 14 23 23 11 23 0]xS +0.602 0 0.199 1 scol : 0 1339 385 126 rc N 384 1339 M -1 1339 I -1 1464 I 384 1464 I C +K +; : 0 1362 385 103 rc N 384 1362 M -1 1362 I -1 1464 I 384 1464 I C +K +; 0 0 0 1 scol 58 1430 M (updateTarget\(\))[23 23 23 23 11 23 26 23 14 23 23 11 14 0]xS +64 1273 M (<>)[24 24 10 23 11 23 14 12 23 21 23 24 0]xS +1 1 1 1 scol [ 72 24 ] 0 sd N 540 1231 M 385 1280 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 540 1231 M 385 1280 I K +0.602 0 0.199 1 scol solid N 385 1280 M 449 1283 I 435 1241 I C +: 1 1 1 1 scol O ; K +1 1 1 1 scol [ 72 24 ] 0 sd N 541 1344 M 385 1344 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 541 1344 M 385 1344 I K +0.602 0 0.199 1 scol solid N 385 1344 M 445 1366 I 445 1322 I C +: 1 1 1 1 scol O ; K +N 1043 1616 M 1903 1616 I K +N 1903 1616 M 1903 1472 I K +N 1949 1550 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1949 1588 M (*)S +0.602 0 0.199 1 scol N 1043 1616 M 191 1616 I K +N 191 1616 M 191 1465 I K +N 237 1542 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 237 1580 M (*)S +N 1949 1550 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1949 1588 M (*)S +N 237 1542 16 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 237 1580 M (*)S +N 1186 1556 221 47 rp C +1 1 1 1 scol L 0 0 0 1 scol 1186 1594 M (<>)[24 24 11 23 14 23 23 11 20 24 0]xS +: N 1707 306 362 284 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2069 305 M 1706 305 I 1706 590 I 2069 590 I C +K +0 0 0 1 scol 1725 355 M (ConstantPoolGen)[30 23 23 20 11 23 23 11 27 23 23 10 32 23 0]xS +0.602 0 0.199 1 scol N 2069 371 M 1706 371 I 1706 590 I 2069 590 I C +K +N 2069 394 M 1706 394 I 1706 590 I 2069 590 I C +K +0 0 0 1 scol 1765 462 M (addClass\(\))[23 23 23 30 10 23 20 20 14 0]xS +1765 509 M (addMethodRef\(\))[23 23 23 33 23 11 23 23 23 30 23 12 14 0]xS +1765 556 M (addInteger\(\))[23 23 23 10 23 11 23 23 23 14 14 0]xS +: N 1475 683 314 234 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1789 682 M 1474 682 I 1474 917 I 1789 917 I C +K +0 0 0 1 scol 1541 732 M (ClassGen)[30 10 23 20 20 32 23 0]xS +0.602 0 0.199 1 scol N 1789 748 M 1474 748 I 1474 917 I 1789 917 I C +K +N 1789 771 M 1474 771 I 1474 917 I 1789 917 I C +K +0 0 0 1 scol 1533 839 M (addInterface\(\))[23 23 23 10 23 11 23 14 12 23 21 23 14 0]xS +1533 886 M (addMethod\(\))[23 23 23 33 23 11 23 23 23 14 0]xS +0.602 0 0.199 1 scol N 1634 682 M 1634 602 I K +N 1751 636 M 1782 591 I K +N 1751 636 M 1717 681 I K +1 1 1 1 scol [ 72 24 ] 0 sd N 536 1458 M 385 1408 I K +0 0 0 1 scol [ 72 24 ] 0 sd N 536 1458 M 385 1408 I K +0.602 0 0.199 1 scol solid N 385 1408 M 449 1406 I 435 1448 I C +: 1 1 1 1 scol O ; K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica-Oblique +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore + +%%EndDocument + @endspecial 934 5316 a Fq(Figur)n(e)26 b(4:)k(UML)25 +b(diagram)g(of)g(the)h(ClassGen)e(API)1863 5712 y(14)p +eop +%%Page: 15 15 +15 14 bop 0 407 a Ft(\(or)17 b(index\))g(within)g(the)g(byte)f(code.)25 +b(Since)18 b(many)f(instr)o(uctions)f(ar)n(e)i(immutable,)h(the)e +Ff(InstructionCon)o(st)o(an)o(ts)0 520 y Ft(interface)23 +b(of)n(fers)f(shar)n(eable)h(pr)n(ede\002ned)e(\223\003y-weight\224)h +(constants)g(to)g(use.)146 633 y(Instr)o(uctions)28 b(ar)n(e)h(gr)n +(ouped)e(via)k(sub-classing,)f(the)f(type)e(hierar)n(chy)j(of)f(instr)o +(uction)f(classes)h(is)g(illus-)0 746 y(trated)d(by)h(\(incomplete\))g +(\002gur)n(e)f(9)h(in)h(the)e(appendix.)39 b(The)27 b(most)f(important) +g(family)j(of)e(instr)o(uctions)f(ar)n(e)0 858 y(the)h +Fs(branch)h(instructions)p Ft(,)i(e.g.)42 b Ff(goto)p +Ft(,)27 b(that)h(branch)g(to)f(tar)n(gets)g(somewher)n(e)e(within)j +(the)f(byte)g(code.)42 b(Ob-)0 971 y(viously)-10 b(,)24 +b(this)f(makes)g(them)g(candidates)h(for)f(playing)h(an)g +Ff(InstructionTarge)o(te)o(r)18 b Ft(r)n(ole,)23 b(too.)31 +b(Instr)o(uc-)0 1084 y(tions)16 b(ar)n(e)i(further)e(gr)n(ouped)g(by)h +(the)f(interfaces)h(they)f(implement,)i(ther)n(e)e(ar)n(e,)i(e.g.,)f +Ff(TypedInstructi)o(on)p Ft(s)0 1197 y(that)24 b(ar)n(e)h(associated)f +(with)h(a)g(speci\002c)g(type)e(like)i Ff(ldc)p Ft(,)f(or)g +Ff(ExceptionThrowe)o(r)18 b Ft(instr)o(uctions)24 b(that)h(may)0 +1310 y(raise)e(exceptions)e(when)g(executed.)146 1423 +y(All)i(instr)o(uctions)f(can)h(be)f(traversed)f(via)i +Ff(accept\(Visitor)48 b(v\))22 b Ft(methods,)e(i.e.,)h(the)h(V)-5 +b(isitor)21 b(design)0 1536 y(pattern.)53 b(Ther)n(e)31 +b(is)g(however)f(some)h(special)h(trick)f(in)h(these)e(methods)f(that)i +(allows)h(to)f(mer)n(ge)g(the)f(han-)0 1649 y(dling)21 +b(of)g(certain)g(instr)o(uction)g(gr)n(oups.)26 b(The)20 +b Ff(accept\(\))d Ft(do)j(not)h(only)f(call)j(the)d(corr)n(esponding)f +Ff(visit\(\))0 1762 y Ft(method,)34 b(but)g(call)h Ff(visit\(\))30 +b Ft(methods)i(of)h(their)g(r)n(espective)f(super)g(classes)h(and)h +(implemented)e(inter)n(-)0 1875 y(faces)27 b(\002rst,)g(i.e.)40 +b(the)26 b(most)g(speci\002c)h Ff(visit\(\))d Ft(call)29 +b(is)e(last.)40 b(Thus)26 b(one)g(can)i(gr)n(oup)e(the)g(handling)h +(of,)h(say)-10 b(,)0 1988 y(all)24 b Ff(BranchInstructi)o(on)o +Ft(s)17 b(into)22 b(one)g(single)g(method.)146 2100 y(For)30 +b(debugging)f(purposes)f(it)j(may)g(even)g(make)f(sense)f(to)h +(\223invent\224)i(your)e(own)g(instr)o(uctions.)51 b(In)31 +b(a)0 2213 y(sophisticated)23 b(code)h(generator)f(like)i(the)e(one)h +(used)g(as)g(a)i(backend)e(of)h(the)f(Barat)g(framework)g([BS98)q(])h +(one)0 2326 y(often)h(has)g(to)h(insert)e(temporary)h +Ff(nop)f Ft(\(No)h(operation\))g(instr)o(uctions.)39 +b(When)27 b(examining)g(the)f(pr)n(oduced)0 2439 y(code)34 +b(it)g(may)h(be)f(very)g(dif)n(\002cult)i(to)d(track)i(back)g(wher)n(e) +f(the)f Ff(nop)g Ft(was)i(actually)g(inserted.)62 b(One)34 +b(could)0 2552 y(think)24 b(of)h(a)h(derived)e Ff(nop2)f +Ft(instr)o(uction)h(that)h(contains)g(additional)g(debugging)e +(information.)36 b(When)24 b(the)0 2665 y(instr)o(uction)e(list)h(is)g +(dumped)e(to)h(byte)g(code,)f(the)h(extra)g(data)h(is)g(simply)f(dr)n +(opped.)146 2778 y(One)j(could)g(also)g(think)g(of)g(new)f(byte)g(code) +g(instr)o(uctions)g(operating)g(on)h(complex)g(numbers)f(that)h(ar)n(e) +0 2891 y(r)n(eplaced)e(by)f(normal)h(byte)f(code)g(upon)g(load-time)h +(or)f(ar)n(e)h(r)n(ecognized)f(by)h(a)g(new)f(JVM.)0 +3147 y Fg(3.3.4)99 b(Instruction)25 b(lists)0 3324 y +Ft(An)18 b Fs(instruction)i(list)g Ft(is)e(implemented)g(by)g(a)h(list) +g(of)g Fs(instruction)g(handles)h Ft(encapsulating)f(instr)o(uction)f +(objects.)0 3437 y(Refer)n(ences)k(to)g(instr)o(uctions)h(in)h(the)e +(list)i(ar)n(e)g(thus)e(not)h(implemented)f(by)h(dir)n(ect)g(pointers)f +(to)h(instr)o(uctions)0 3549 y(but)31 b(by)f(pointers)f(to)h(instr)o +(uction)h Fs(handles)p Ft(.)53 b(This)31 b(makes)f(appending,)h +(inserting)f(and)h(deleting)e(ar)n(eas)i(of)0 3662 y(code)25 +b(very)h(simple.)38 b(Since)27 b(we)e(use)h(symbolic)g(r)n(efer)n +(ences,)g(computation)g(of)g(concr)n(ete)g(byte)f(code)g(of)n(fsets)0 +3775 y(does)19 b(not)h(need)f(to)h(occur)h(until)f(\002nalization,)j +(i.e.)k(until)21 b(the)f(user)f(has)i(\002nished)e(the)h(pr)n(ocess)f +(of)i(generating)0 3888 y(or)29 b(transforming)f(code.)46 +b(W)-8 b(e)28 b(will)i(use)e(the)g(term)h(instr)o(uction)f(handle)h +(and)g(instr)o(uction)g(synonymously)0 4001 y(thr)n(oughout)23 +b(the)h(r)n(est)g(of)h(the)f(paper)-7 b(.)35 b(Instr)o(uction)23 +b(handles)i(may)g(contain)h(additional)f(user)n(-de\002ned)e(data)0 +4114 y(using)f(the)g Ff(addAttribute\(\))16 b Ft(method.)0 +4362 y Fg(Appending.)90 b Ft(One)29 b(can)g(append)e(instr)o(uctions)h +(or)g(other)g(instr)o(uction)g(lists)g(anywher)n(e)g(to)g(an)h +(existing)0 4475 y(list.)63 b(The)34 b(instr)o(uctions)g(ar)n(e)h +(appended)d(after)i(the)g(given)g(instr)o(uction)g(handle.)63 +b(All)36 b(append)d(methods)0 4588 y(r)n(eturn)27 b(a)h(new)g(instr)o +(uction)f(handle)h(which)g(may)h(then)d(be)i(used)f(as)h(the)f(tar)n +(get)g(of)h(a)g(branch)h(instr)o(uction,)0 4701 y(e.g..)109 +4898 y Ff(InstructionList)48 b(il)53 b(=)i(new)e(InstructionLis)o(t\()o +(\);)109 5011 y(...)109 5124 y(GOTO)g(g)h(=)g(new)f(GOTO\(null\);)109 +5237 y(il.append\(g\);)109 5350 y(...)109 5463 y(InstructionHand)o(le) +48 b(ih)54 b(=)g(il.append\(Inst)o(ru)o(ct)o(ion)o(Co)o(ns)o(ta)o(nt)o +(s.A)o(CO)o(NS)o(T_)o(NU)o(LL\))o(;)1863 5712 y Fq(15)p +eop +%%Page: 16 16 +16 15 bop 109 407 a Ff(g.setTarget\(ih\))o(;)0 662 y +Fg(Inserting.)91 b Ft(Instr)o(uctions)24 b(may)j(be)f(inserted)e +(anywher)n(e)i(into)g(an)g(existing)f(list.)39 b(They)25 +b(ar)n(e)i(inserted)d(be-)0 775 y(for)n(e)19 b(the)f(given)g(instr)o +(uction)h(handle.)26 b(All)20 b(insert)e(methods)f(r)n(eturn)h(a)h(new) +f(instr)o(uction)h(handle)f(which)i(may)0 888 y(then)i(be)g(used)f(as)i +(the)f(start)g(addr)n(ess)f(of)i(an)g(exception)e(handler)-7 +b(,)23 b(for)f(example.)109 1114 y Ff(InstructionHand)o(le)48 +b(start)k(=)i(il.insert\(inser)o(tio)o(n_)o(po)o(in)o(t,)2073 +1227 y(InstructionCon)o(st)o(ant)o(s.)o(NO)o(P\))o(;)109 +1339 y(...)109 1452 y(mg.addException)o(Ha)o(nd)o(ler)o(\(s)o(ta)o(rt)o +(,)48 b(end,)53 b(handler,)e("java.io.IOExce)o(pt)o(io)o(n"\))o(;)0 +1708 y Fg(Deleting.)91 b Ft(Deletion)34 b(of)f(instr)o(uctions)g(is)h +(also)g(very)f(straightforwar)n(d;)38 b(all)e(instr)o(uction)d(handles) +g(and)0 1820 y(the)28 b(contained)g(instr)o(uctions)f(within)i(a)g +(given)g(range)f(ar)n(e)g(r)n(emoved)g(fr)n(om)h(the)f(instr)o(uction)g +(list)h(and)f(dis-)0 1933 y(posed.)e(The)c Ff(delete\(\))d +Ft(method)i(may)i(however)e(thr)n(ow)h(a)h Ff(TargetLostExcep)o(tio)o +(n)16 b Ft(when)22 b(ther)n(e)g(ar)n(e)0 2046 y(instr)o(uction)e(tar)n +(geters)e(still)j(r)n(efer)n(encing)f(one)f(of)h(the)f(deleted)f(instr) +o(uctions.)26 b(The)20 b(user)f(is)h(for)n(ced)g(to)f(handle)0 +2159 y(such)30 b(exceptions)f(in)i(a)g Ff(try-catch)c +Ft(block)k(and)f(r)n(edir)n(ect)g(these)f(r)n(efer)n(ences)h(elsewher)n +(e.)49 b(The)30 b Fs(peep)j(hole)0 2272 y Ft(optimizer)23 +b(described)e(in)i(section)f(A.3)h(gives)f(a)h(detailed)f(example)h +(for)f(this.)109 2498 y Ff(try)53 b({)218 2611 y(il.delete\(first)o(,) +48 b(last\);)109 2724 y(})54 b(catch\(TargetLos)o(tE)o(xce)o(pt)o(io)o +(n)48 b(e\))54 b({)218 2837 y(InstructionHand)o(le)o([])48 +b(targets)j(=)k(e.getTargets\(\))o(;)218 2949 y(for\(int)d(i=0;)g(i)i +(<)g(targets.length;)48 b(i++\))53 b({)327 3062 y(InstructionTarg)o +(ete)o(r[)o(])48 b(targeters)j(=)j(targets[i].get)o(Tar)o(ge)o(te)o(rs) +o(\(\))o(;)327 3175 y(for\(int)e(j=0;)g(j)i(<)h(targeters.leng)o(th)o +(;)48 b(j++\))491 3288 y(targeters[j].up)o(da)o(te)o(Ta)o(rg)o(et\()o +(ta)o(rg)o(et)o(s[)o(i],)g(new_target\);)218 3401 y(})109 +3514 y(})0 3769 y Fg(Finalizing.)92 b Ft(When)27 b(the)g(instr)o +(uction)h(list)g(is)g(r)n(eady)g(to)f(be)h(dumped)f(to)g(pur)n(e)h +(byte)f(code,)h(all)h(symbolic)0 3882 y(r)n(efer)n(ences)35 +b(must)g(be)h(mapped)g(to)f(r)n(eal)i(byte)e(code)h(of)n(fsets.)67 +b(This)36 b(is)g(done)f(by)h(the)f Ff(getByteCode\(\))0 +3995 y Ft(method)23 b(which)i(is)f(called)h(by)f(default)g(by)g +Ff(MethodGen.getMe)o(th)o(od)o(\(\))o Ft(.)j(Afterwar)n(ds)c(you)g +(should)g(call)0 4108 y Ff(dispose\(\))c Ft(so)j(that)h(the)f(instr)o +(uction)h(handles)f(can)i(be)f(r)n(eused)e(internally)-10 +b(.)29 b(This)23 b(helps)f(to)g(r)n(educe)h(mem-)0 4221 +y(ory)f(usage.)109 4447 y Ff(InstructionList)48 b(il)53 +b(=)i(new)e(InstructionLis)o(t\()o(\);)109 4672 y(ClassGen)106 +b(cg)53 b(=)h(new)f(ClassGen\("HelloW)o(or)o(ld)o(",)48 +b("java.lang.Obje)o(ct)o(",)1636 4785 y("",)h(ACC_PUBLIC)h +(|)k(ACC_SUPER,)1636 4898 y(null\);)109 5011 y(MethodGen)d(mg)i(=)h +(new)f(MethodGen\(ACC_ST)o(AT)o(IC)48 b(|)54 b(ACC_PUBLIC,)1691 +5124 y(Type.VOID,)c(new)j(Type[])f({)1800 5237 y(new)h +(ArrayType\(Type.)o(ST)o(RIN)o(G,)48 b(1\))1691 5350 +y(},)54 b(new)f(String[])e({)j("argv")e(},)1691 5463 +y("main",)f("HelloWorld",)e(il,)k(cp\);)1863 5712 y Fq(16)p +eop +%%Page: 17 17 +17 16 bop 109 407 a Ff(...)109 520 y(cg.addMethod\(mg)o(.g)o(et)o(Met)o +(ho)o(d\()o(\)\))o(;)109 633 y(il.dispose\(\);)49 b(//)k(Reuse)g +(instruction)c(handles)j(of)h(list)0 887 y Fg(3.3.5)99 +b(Code)25 b(example)f(revisited)0 1063 y Ft(Using)h(instr)o(uction)g +(lists)h(gives)f(us)g(a)i(generic)e(view)h(upon)e(the)h(code:)34 +b(In)25 b(Figur)n(e)g(5)h(we)f(again)i(pr)n(esent)d(the)0 +1176 y(code)e(chunk)h(of)g(the)f Ff(readInt\(\))d Ft(method)i(of)i(the) +f(faculty)i(example)e(in)i(section)e(2.6:)29 b(The)22 +b(local)j(variables)0 1289 y Ff(n)k Ft(and)g Ff(e1)g +Ft(both)g(hold)g(two)g(r)n(efer)n(ences)f(to)h(instr)o(uctions,)h +(de\002ning)e(their)h(scope.)47 b(Ther)n(e)29 b(ar)n(e)h(two)e +Ff(goto)p Ft(s)0 1402 y(branching)g(to)e(the)g Ff(iload)f +Ft(at)j(the)e(end)g(of)h(the)f(method.)40 b(One)27 b(of)g(the)f +(exception)g(handlers)g(is)i(displayed,)0 1515 y(too:)f(it)c(r)n(efer)n +(ences)e(the)h(start)g(and)h(the)e(end)h(of)h(the)f Ff(try)f +Ft(block)i(and)g(also)f(the)g(exception)g(handler)g(code.)0 +4170 y @beginspecial 0 @llx 0 @lly 583 @urx 386 @ury +4590 @rwi @setspecial +%%BeginDocument: eps/il.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: il.eps +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Wed Dec 2 15:26:46 1998 +%%For: dahm@che (Markus Dahm,,,,,) +%%Orientation: Portrait +%%BoundingBox: 0 0 583 386 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-84.0 526.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 9337 m -1000 -1000 l 11587 -1000 l 11587 9337 l cp clip + 0.06299 0.06299 sc +% Polyline +7.500 slw + [60] 0 sd +gs clippath +5205 7530 m 5175 7650 l 5145 7530 l 5145 7665 l 5205 7665 l cp +clip +n 5175 6975 m 5175 7650 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5205 7530 m 5175 7650 l 5145 7530 l col0 s +% Polyline + [60] 0 sd +gs clippath +5595 7095 m 5625 6975 l 5655 7095 l 5655 6960 l 5595 6960 l cp +clip +n 5625 7650 m 5625 6975 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5595 7095 m 5625 6975 l 5655 7095 l col0 s +% Polyline + [60] 0 sd +gs clippath +5205 3930 m 5175 4050 l 5145 3930 l 5145 4065 l 5205 4065 l cp +clip +n 5175 3375 m 5175 4050 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5205 3930 m 5175 4050 l 5145 3930 l col0 s +% Polyline + [60] 0 sd +gs clippath +5595 3495 m 5625 3375 l 5655 3495 l 5655 3360 l 5595 3360 l cp +clip +n 5625 4050 m 5625 3375 l gs col0 s gr gr + [] 0 sd +% arrowhead +n 5595 3495 m 5625 3375 l 5655 3495 l col0 s +% Polyline +n 4380 6750 m 4275 6750 4275 6870 105 arcto 4 {pop} repeat + 4275 6975 6420 6975 105 arcto 4 {pop} repeat + 6525 6975 6525 6855 105 arcto 4 {pop} repeat + 6525 6750 4380 6750 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 6930 m +gs 1 -1 sc (goto) col0 sh gr +% Polyline +n 4380 6300 m 4275 6300 4275 6420 105 arcto 4 {pop} repeat + 4275 6525 6420 6525 105 arcto 4 {pop} repeat + 6525 6525 6525 6405 105 arcto 4 {pop} repeat + 6525 6300 4380 6300 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 6480 m +gs 1 -1 sc (invokevirtual) col0 sh gr +% Polyline +n 4380 5850 m 4275 5850 4275 5970 105 arcto 4 {pop} repeat + 4275 6075 6420 6075 105 arcto 4 {pop} repeat + 6525 6075 6525 5955 105 arcto 4 {pop} repeat + 6525 5850 4380 5850 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 6030 m +gs 1 -1 sc (aload) col0 sh gr +% Polyline +n 4380 5400 m 4275 5400 4275 5520 105 arcto 4 {pop} repeat + 4275 5625 6420 5625 105 arcto 4 {pop} repeat + 6525 5625 6525 5505 105 arcto 4 {pop} repeat + 6525 5400 4380 5400 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 5580 m +gs 1 -1 sc (getstatic) col0 sh gr +% Polyline +n 4380 4950 m 4275 4950 4275 5070 105 arcto 4 {pop} repeat + 4275 5175 6420 5175 105 arcto 4 {pop} repeat + 6525 5175 6525 5055 105 arcto 4 {pop} repeat + 6525 4950 4380 4950 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 5130 m +gs 1 -1 sc (astore) col0 sh gr +% Polyline +n 4380 4500 m 4275 4500 4275 4620 105 arcto 4 {pop} repeat + 4275 4725 6420 4725 105 arcto 4 {pop} repeat + 6525 4725 6525 4605 105 arcto 4 {pop} repeat + 6525 4500 4380 4500 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 4680 m +gs 1 -1 sc (goto) col0 sh gr +% Polyline +n 4380 4050 m 4275 4050 4275 4170 105 arcto 4 {pop} repeat + 4275 4275 6420 4275 105 arcto 4 {pop} repeat + 6525 4275 6525 4155 105 arcto 4 {pop} repeat + 6525 4050 4380 4050 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 4230 m +gs 1 -1 sc (istore) col0 sh gr +% Polyline +gs clippath +5595 4395 m 5625 4275 l 5655 4395 l 5655 4260 l 5595 4260 l cp +clip +n 5625 4500 m 5625 4275 l gs col0 s gr gr + +% arrowhead +n 5595 4395 m 5625 4275 l 5655 4395 l col0 s +% Polyline +gs clippath +5205 4380 m 5175 4500 l 5145 4380 l 5145 4515 l 5205 4515 l cp +clip +n 5175 4275 m 5175 4500 l gs col0 s gr gr + +% arrowhead +n 5205 4380 m 5175 4500 l 5145 4380 l col0 s +% Polyline +gs clippath +5595 4845 m 5625 4725 l 5655 4845 l 5655 4710 l 5595 4710 l cp +clip +n 5625 4950 m 5625 4725 l gs col0 s gr gr + +% arrowhead +n 5595 4845 m 5625 4725 l 5655 4845 l col0 s +% Polyline +gs clippath +5205 4830 m 5175 4950 l 5145 4830 l 5145 4965 l 5205 4965 l cp +clip +n 5175 4725 m 5175 4950 l gs col0 s gr gr + +% arrowhead +n 5205 4830 m 5175 4950 l 5145 4830 l col0 s +% Polyline +gs clippath +5595 5295 m 5625 5175 l 5655 5295 l 5655 5160 l 5595 5160 l cp +clip +n 5625 5400 m 5625 5175 l gs col0 s gr gr + +% arrowhead +n 5595 5295 m 5625 5175 l 5655 5295 l col0 s +% Polyline +gs clippath +5205 5280 m 5175 5400 l 5145 5280 l 5145 5415 l 5205 5415 l cp +clip +n 5175 5175 m 5175 5400 l gs col0 s gr gr + +% arrowhead +n 5205 5280 m 5175 5400 l 5145 5280 l col0 s +% Polyline +gs clippath +5595 5745 m 5625 5625 l 5655 5745 l 5655 5610 l 5595 5610 l cp +clip +n 5625 5850 m 5625 5625 l gs col0 s gr gr + +% arrowhead +n 5595 5745 m 5625 5625 l 5655 5745 l col0 s +% Polyline +gs clippath +5205 5730 m 5175 5850 l 5145 5730 l 5145 5865 l 5205 5865 l cp +clip +n 5175 5625 m 5175 5850 l gs col0 s gr gr + +% arrowhead +n 5205 5730 m 5175 5850 l 5145 5730 l col0 s +% Polyline +gs clippath +5595 6195 m 5625 6075 l 5655 6195 l 5655 6060 l 5595 6060 l cp +clip +n 5625 6300 m 5625 6075 l gs col0 s gr gr + +% arrowhead +n 5595 6195 m 5625 6075 l 5655 6195 l col0 s +% Polyline +gs clippath +5205 6180 m 5175 6300 l 5145 6180 l 5145 6315 l 5205 6315 l cp +clip +n 5175 6075 m 5175 6300 l gs col0 s gr gr + +% arrowhead +n 5205 6180 m 5175 6300 l 5145 6180 l col0 s +% Polyline +gs clippath +5595 6645 m 5625 6525 l 5655 6645 l 5655 6510 l 5595 6510 l cp +clip +n 5625 6750 m 5625 6525 l gs col0 s gr gr + +% arrowhead +n 5595 6645 m 5625 6525 l 5655 6645 l col0 s +% Polyline +gs clippath +5205 6630 m 5175 6750 l 5145 6630 l 5145 6765 l 5205 6765 l cp +clip +n 5175 6525 m 5175 6750 l gs col0 s gr gr + +% arrowhead +n 5205 6630 m 5175 6750 l 5145 6630 l col0 s +% Polyline +n 4380 7650 m 4275 7650 4275 7770 105 arcto 4 {pop} repeat + 4275 7875 6420 7875 105 arcto 4 {pop} repeat + 6525 7875 6525 7755 105 arcto 4 {pop} repeat + 6525 7650 4380 7650 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 7830 m +gs 1 -1 sc (iload) col0 sh gr +% Polyline +n 4380 8100 m 4275 8100 4275 8220 105 arcto 4 {pop} repeat + 4275 8325 6420 8325 105 arcto 4 {pop} repeat + 6525 8325 6525 8205 105 arcto 4 {pop} repeat + 6525 8100 4380 8100 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 8280 m +gs 1 -1 sc (ireturn) col0 sh gr +% Polyline +gs clippath +5595 7995 m 5625 7875 l 5655 7995 l 5655 7860 l 5595 7860 l cp +clip +n 5625 8100 m 5625 7875 l gs col0 s gr gr + +% arrowhead +n 5595 7995 m 5625 7875 l 5655 7995 l col0 s +% Polyline +gs clippath +5205 7980 m 5175 8100 l 5145 7980 l 5145 8115 l 5205 8115 l cp +clip +n 5175 7875 m 5175 8100 l gs col0 s gr gr + +% arrowhead +n 5205 7980 m 5175 8100 l 5145 7980 l col0 s +% Polyline +gs clippath +5595 2595 m 5625 2475 l 5655 2595 l 5655 2460 l 5595 2460 l cp +clip +n 5625 2700 m 5625 2475 l gs col0 s gr gr + +% arrowhead +n 5595 2595 m 5625 2475 l 5655 2595 l col0 s +% Polyline +gs clippath +5205 2580 m 5175 2700 l 5145 2580 l 5145 2715 l 5205 2715 l cp +clip +n 5175 2475 m 5175 2700 l gs col0 s gr gr + +% arrowhead +n 5205 2580 m 5175 2700 l 5145 2580 l col0 s +% Polyline +n 4380 3150 m 4275 3150 4275 3270 105 arcto 4 {pop} repeat + 4275 3375 6420 3375 105 arcto 4 {pop} repeat + 6525 3375 6525 3255 105 arcto 4 {pop} repeat + 6525 3150 4380 3150 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 3330 m +gs 1 -1 sc (getstatic) col0 sh gr +% Polyline +n 4380 2700 m 4275 2700 4275 2820 105 arcto 4 {pop} repeat + 4275 2925 6420 2925 105 arcto 4 {pop} repeat + 6525 2925 6525 2805 105 arcto 4 {pop} repeat + 6525 2700 4380 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4455 2880 m +gs 1 -1 sc (istore) col0 sh gr +% Polyline +n 4380 2250 m 4275 2250 4275 2370 105 arcto 4 {pop} repeat + 4275 2475 6420 2475 105 arcto 4 {pop} repeat + 6525 2475 6525 2355 105 arcto 4 {pop} repeat + 6525 2250 4380 2250 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +4500 2430 m +gs 1 -1 sc (sipush) col0 sh gr +% Polyline +gs clippath +5595 3045 m 5625 2925 l 5655 3045 l 5655 2910 l 5595 2910 l cp +clip +n 5625 3150 m 5625 2925 l gs col0 s gr gr + +% arrowhead +n 5595 3045 m 5625 2925 l 5655 3045 l col0 s +% Polyline +gs clippath +5205 3030 m 5175 3150 l 5145 3030 l 5145 3165 l 5205 3165 l cp +clip +n 5175 2925 m 5175 3150 l gs col0 s gr gr + +% arrowhead +n 5205 3030 m 5175 3150 l 5145 3030 l col0 s +% Polyline +n 1350 5175 m 3600 5175 l 3600 5625 l 1350 5625 l cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +1575 5400 m +gs 1 -1 sc (IOException e1) col0 sh gr +% Polyline +n 1575 5175 m 1575 4950 l 3825 4950 l 3825 5400 l 3600 5400 l 3600 5175 l + 1575 5175 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 1350 3600 m 3600 3600 l 3600 4050 l 1350 4050 l cp gs col0 s gr +/Courier-Bold ff 210.00 scf sf +1575 3825 m +gs 1 -1 sc (int n) col0 sh gr +% Polyline +n 1575 3600 m 1575 3375 l 3825 3375 l 3825 3825 l 3600 3825 l 3600 3600 l + 1575 3600 l cp gs 0.00 setgray ef gr gs col0 s gr +% Polyline +n 7200 4050 m 10350 4050 l 10350 4500 l 7200 4500 l cp gs col0 s gr +% Polyline +n 7425 4050 m 7425 3825 l 10575 3825 l 10575 4275 l 10350 4275 l 10350 4050 l + 8325 4050 l gs 0.00 setgray ef gr gs col0 s gr +/Courier-Bold ff 210.00 scf sf +7425 4275 m +gs 1 -1 sc (Exception handler 1) col0 sh gr +% Polyline +gs clippath +4152 5071 m 4275 5085 l 4160 5131 l 4294 5113 l 4286 5053 l cp +clip +n 3600 5175 m 4275 5085 l gs col0 s gr gr + +% arrowhead +n 4152 5071 m 4275 5085 l 4160 5131 l 4156 5101 l 4152 5071 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4190 2475 m 4275 2385 l 4243 2504 l 4309 2386 l 4256 2357 l cp +clip +n 3600 3600 m 4275 2385 l gs col0 s gr gr + +% arrowhead +n 4190 2475 m 4275 2385 l 4243 2504 l 4217 2490 l 4190 2475 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4221 6324 m 4275 6435 l 4175 6362 l 4262 6466 l 4308 6427 l cp +clip +n 3600 5625 m 4275 6435 l gs col0 s gr gr + +% arrowhead +n 4221 6324 m 4275 6435 l 4175 6362 l 4198 6343 l 4221 6324 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6635 5029 m 6525 5085 l 6596 4984 l 6494 5072 l 6533 5117 l cp +clip +n 7200 4500 m 6525 5085 l gs col0 s gr gr + +% arrowhead +n 6635 5029 m 6525 5085 l 6596 4984 l 6616 5006 l 6635 5029 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6645 4215 m 6525 4185 l 6645 4155 l 6510 4155 l 6510 4215 l cp +clip +n 7200 4185 m 6525 4185 l gs col0 s gr gr + +% arrowhead +n 6645 4215 m 6525 4185 l 6645 4155 l 6645 4185 l 6645 4215 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6582 3395 m 6525 3285 l 6627 3355 l 6538 3254 l 6493 3294 l cp +clip +n 7200 4050 m 6525 3285 l gs col0 s gr gr + +% arrowhead +n 6582 3395 m 6525 3285 l 6627 3355 l 6604 3375 l 6582 3395 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4329 7977 m 4320 8100 l 4269 7987 l 4293 8120 l 4352 8110 l cp +clip +n 3600 4050 m 4320 8100 l gs col0 s gr gr + +% arrowhead +n 4329 7977 m 4320 8100 l 4269 7987 l 4299 7982 l 4329 7977 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6649 7784 m 6525 7785 l 6633 7726 l 6503 7760 l 6518 7818 l cp +clip +n 6525 4635 m 6527 4636 l 6532 4640 l 6542 4646 l 6556 4655 l 6575 4667 l + 6600 4683 l 6628 4702 l 6661 4723 l 6695 4746 l 6731 4771 l + 6768 4796 l 6804 4821 l 6838 4845 l 6871 4869 l 6902 4892 l + 6931 4915 l 6958 4936 l 6983 4957 l 7005 4977 l 7026 4996 l + 7045 5015 l 7063 5034 l 7080 5054 l 7095 5073 l 7110 5093 l + 7124 5113 l 7137 5133 l 7150 5154 l 7162 5176 l 7174 5199 l + 7185 5223 l 7196 5247 l 7207 5273 l 7216 5299 l 7226 5326 l + 7235 5353 l 7243 5381 l 7251 5409 l 7258 5438 l 7265 5467 l + 7271 5496 l 7276 5525 l 7281 5554 l 7286 5582 l 7290 5611 l + 7293 5639 l 7296 5667 l 7299 5694 l 7301 5721 l 7303 5748 l + 7305 5775 l 7306 5802 l 7308 5829 l 7309 5857 l 7310 5885 l + 7310 5914 l 7311 5944 l 7311 5974 l 7311 6004 l 7311 6035 l + 7310 6067 l 7310 6099 l 7309 6131 l 7308 6163 l 7307 6195 l + 7306 6227 l 7305 6258 l 7304 6289 l 7302 6320 l 7301 6350 l + 7299 6379 l 7298 6407 l 7296 6435 l 7295 6462 l 7293 6489 l + 7292 6514 l 7290 6540 l 7288 6567 l 7287 6595 l 7285 6622 l + 7283 6650 l 7281 6677 l 7279 6706 l 7277 6734 l 7275 6762 l + 7273 6791 l 7270 6820 l 7268 6848 l 7265 6877 l 7263 6905 l + 7260 6932 l 7257 6959 l 7255 6986 l 7252 7011 l 7249 7036 l + 7246 7060 l 7243 7084 l 7240 7106 l 7237 7128 l 7233 7149 l + 7230 7170 l 7226 7195 l 7221 7219 l 7216 7243 l 7211 7268 l + 7205 7292 l 7198 7317 l 7191 7342 l 7183 7366 l 7174 7390 l + 7165 7414 l 7155 7436 l 7144 7459 l 7133 7480 l 7121 7500 l + 7108 7519 l 7095 7537 l 7081 7553 l 7066 7569 l 7051 7584 l + 7035 7598 l 7020 7609 l 7003 7621 l 6985 7632 l 6966 7642 l + 6945 7653 l 6921 7663 l 6895 7674 l 6867 7684 l 6836 7695 l + 6803 7706 l 6767 7717 l 6730 7728 l 6693 7739 l 6656 7750 l + 6622 7759 l 6592 7767 l 6567 7774 l 6525 7785 l gs col0 s gr gr + +% arrowhead +n 6649 7784 m 6525 7785 l 6633 7726 l 6641 7755 l 6649 7784 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6619 7615 m 6525 7695 l 6570 7580 l 6492 7690 l 6541 7725 l cp +clip +n 6525 6840 m 6526 6843 l 6529 6850 l 6533 6863 l 6540 6882 l 6549 6908 l + 6560 6938 l 6572 6973 l 6585 7010 l 6598 7048 l 6610 7086 l + 6622 7122 l 6632 7157 l 6642 7189 l 6650 7219 l 6657 7246 l + 6663 7271 l 6667 7294 l 6671 7315 l 6673 7335 l 6675 7354 l + 6675 7373 l 6674 7394 l 6672 7415 l 6669 7435 l 6663 7455 l + 6656 7476 l 6648 7498 l 6637 7520 l 6624 7544 l 6610 7568 l + 6595 7593 l 6579 7617 l 6564 7640 l 6550 7660 l 6525 7695 l gs col0 s gr gr + +% arrowhead +n 6619 7615 m 6525 7695 l 6570 7580 l 6595 7597 l 6619 7615 l cp gs 0.00 setgray ef gr col0 s +$F2psEnd +rs + +%%EndDocument + @endspecial 844 4373 a Fq(Figur)n(e)k(5:)31 b(Instr)o(uction)26 +b(list)g(for)g Fh(readInt\(\))d Fq(method)0 4834 y Fg(3.3.6)99 +b(Instruction)25 b(factories)0 5011 y Ft(T)-8 b(o)16 +b(simplify)i(the)f(cr)n(eation)g(of)g(certain)h(instr)o(uctions)e(the)h +(user)f(can)i(use)e(the)g(supplied)g Ff(InstructionFact)o(or)o(y)0 +5124 y Ft(class)28 b(which)f(of)n(fers)g(a)h(lot)f(of)g(useful)g +(methods)e(to)i(cr)n(eate)g(instr)o(uctions)f(fr)n(om)i(scratch.)42 +b(Alternatively)-10 b(,)28 b(he)0 5237 y(can)j(also)g(use)e +Fs(compound)i(instructions)p Ft(:)45 b(When)29 b(pr)n(oducing)h(byte)f +(code,)j(some)d(patterns)g(typically)i(occur)0 5350 y(very)25 +b(fr)n(equently)-10 b(,)24 b(for)h(instance)g(the)g(compilation)h(of)f +(arithmetic)h(or)f(comparison)g(expr)n(essions.)34 b(Y)-8 +b(ou)24 b(cer)n(-)0 5463 y(tainly)k(do)f(not)g(want)h(to)f(r)n(ewrite)g +(the)g(code)g(that)g(translates)g(such)g(expr)n(essions)f(into)h(byte)g +(code)g(in)h(every)1863 5712 y Fq(17)p eop +%%Page: 18 18 +18 17 bop 0 407 a Ft(place)26 b(they)f(may)h(appear)-7 +b(.)36 b(In)26 b(or)n(der)e(to)h(support)f(this,)i(the)e +Fe(BCEL)j Ft(API)e(includes)h(a)g Fs(compound)g(instruction)0 +520 y Ft(\(an)k(interface)f(with)f(a)i(single)e Ff(getInstructionL)o +(is)o(t\()o(\))23 b Ft(method\).)45 b(Instances)27 b(of)i(this)g(class) +g(may)g(be)0 633 y(used)21 b(in)i(any)g(place)g(wher)n(e)f(normal)h +(instr)o(uctions)f(would)g(occur)-7 b(,)23 b(particularly)h(in)f +(append)e(operations.)0 898 y Fg(Example:)43 b(Pushing)32 +b(constants.)92 b Ft(Pushing)28 b(constants)g(onto)f(the)h(operand)g +(stack)g(may)h(be)g(coded)f(in)0 1011 y(dif)n(fer)n(ent)g(ways.)44 +b(As)27 b(explained)h(in)g(section)g(2.2)h(ther)n(e)e(ar)n(e)h(some)f +(\223short-cut\224)h(instr)o(uctions)f(that)h(can)h(be)0 +1124 y(used)20 b(to)h(make)g(the)f(pr)n(oduced)g(byte)g(code)h(mor)n(e) +g(compact.)28 b(The)20 b(smallest)i(instr)o(uction)f(to)f(push)h(a)h +(single)e Ff(1)0 1237 y Ft(onto)h(the)h(stack)g(is)g +Ff(iconst)p 1002 1237 28 4 v 30 w(1)p Ft(,)g(other)f(possibilities)i +(ar)n(e)f Ff(bipush)e Ft(\(can)k(be)e(used)f(to)h(push)f(values)i +(between)0 1350 y(-128)h(and)f(127\),)h Ff(sipush)c Ft(\(between)h +(-32768)26 b(and)c(32767\),)j(or)e Ff(ldc)e Ft(\(load)i(constant)f(fr)n +(om)h(constant)f(pool\).)146 1465 y(Instead)28 b(of)i(r)n(epeatedly)d +(selecting)i(the)g(most)f(compact)i(instr)o(uction)f(in,)j(say)-10 +b(,)30 b(a)g(switch,)h(one)e(can)h(use)0 1578 y(the)20 +b(compound)g Ff(PUSH)g Ft(instr)o(uction)h(whenever)f(pushing)g(a)h +(constant)g(number)g(or)g(string.)26 b(It)21 b(will)h(pr)n(oduce)0 +1691 y(the)g(appr)n(opriate)g(byte)g(code)f(instr)o(uction)i(and)f +(insert)g(entries)f(into)i(to)f(constant)f(pool)h(if)i(necessary)-10 +b(.)109 1929 y Ff(il.append\(new)49 b(PUSH\(cp,)i("Hello,)g +(world"\)\);)109 2042 y(il.append\(new)e(PUSH\(cp,)i(4711\)\);)0 +2315 y Fg(3.3.7)99 b(Code)25 b(patterns)f(using)i(regular)e +(expressions)0 2496 y Ft(When)j(transforming)g(code,)g(for)g(instance)g +(during)g(optimization)h(or)f(when)f(inserting)h(analysis)g(method)0 +2609 y(calls,)35 b(one)c(typically)h(sear)n(ches)f(for)g(certain)h +(patterns)e(of)i(code)e(to)h(perform)g(the)g(transformation)g(at.)55 +b(T)-8 b(o)0 2722 y(simplify)27 b(handling)g(such)f(situations)g +Fe(BCEL)i Ft(intr)n(oduces)e(a)h(special)g(featur)n(e:)35 +b(One)27 b(can)g(sear)n(ch)g(for)f(given)0 2835 y(code)17 +b(patterns)e(within)j(an)g(instr)o(uction)f(list)h(using)e +Fs(r)n(egular)k(expr)n(essions)p Ft(.)30 b(In)17 b(such)g(expr)n +(essions,)f(instr)o(uctions)0 2948 y(ar)n(e)26 b(r)n(epr)n(esented)e +(by)i(symbolic)g(names,)h(e.g.)37 b(\224)p Ff(`IfInstruction')p +Ft(\224.)32 b(Meta)26 b(characters)g(like)g Ff(+)p Ft(,)h +Ff(*)p Ft(,)f(and)0 3061 y Ff(\(..|..\))20 b Ft(have)j(their)f(usual)h +(meanings.)k(Thus,)22 b(the)f(expr)n(ession)109 3300 +y Ff("`NOP'+\(`ILOAD_)o(_')o(|`)o(ALO)o(AD)o(__)o('\))o(*")146 +3536 y Ft(r)n(epr)n(esents)28 b(a)i(piece)f(of)h(code)f(consisting)g +(of)h(at)g(least)f(one)g Ff(NOP)g Ft(followed)g(by)h(a)g(possibly)f +(empty)g(se-)0 3649 y(quence)22 b(of)g Ff(ILOAD)f Ft(and)i +Ff(ALOAD)d Ft(instr)o(uctions.)146 3764 y(The)j Ff(search\(\))d +Ft(method)j(of)g(class)i Ff(FindPattern)18 b Ft(gets)k(an)i(instr)o +(uction)g(list)g(and)f(a)i(r)n(egular)e(expr)n(es-)0 +3877 y(sion)g(as)g(ar)n(guments)f(and)h(r)n(eturns)f(an)i(array)f +(describing)g(the)g(ar)n(ea)h(of)f(matched)g(instr)o(uctions.)28 +b(Additional)0 3990 y(constraints)d(to)h(the)f(matching)i(ar)n(ea)g(of) +g(instr)o(uctions,)f(which)g(can)h(not)f(be)g(implemented)f(via)j(r)n +(egular)e(ex-)0 4103 y(pr)n(essions,)21 b(may)i(be)f(expr)n(essed)e +(via)k Fs(code)g(constraints)p Ft(.)0 4376 y Fg(3.3.8)99 +b(Example:)30 b(Optimizing)25 b(boolean)g(expressions.)0 +4557 y Ft(In)17 b(Java,)j(boolean)d(values)h(ar)n(e)f(mapped)g(to)g(1)h +(and)f(to)g(0,)h(r)n(espectively)-10 b(.)25 b(Thus,)18 +b(the)e(simplest)h(way)g(to)g(evaluate)0 4670 y(boolean)k(expr)n +(essions)e(is)j(to)f(push)f(a)i(1)g(or)f(a)h(0)g(onto)f(the)f(operand)g +(stack)h(depending)f(on)h(the)f(tr)o(uth)h(value)h(of)0 +4783 y(the)i(expr)n(ession.)31 b(But)23 b(this)h(way)-10 +b(,)25 b(the)e(subsequent)f(combination)k(of)e(boolean)h(expr)n +(essions)d(\(with)i Ff(&&)p Ft(,)g(e.g\))0 4896 y(yields)e(long)g +(chunks)g(of)h(code)e(that)i(push)e(lots)h(of)h(1s)g(and)f(0s)h(onto)f +(the)f(stack.)146 5011 y(When)i(the)f(code)g(has)h(been)f(\002nalized)i +(these)d(chunks)h(can)h(be)g(optimized)g(with)g(a)g Fs(peep)i(hole)f +Ft(algorithm:)0 5124 y(An)i Ff(IfInstruction)20 b Ft(\(e.g.)38 +b(the)26 b(comparison)g(of)g(two)g(integers:)33 b Ff(if)p +2529 5124 V 32 w(icmpeq)p Ft(\))24 b(that)h(either)h(pr)n(oduces)f(a)0 +5237 y(1)32 b(or)f(a)g(0)h(on)f(the)f(stack)h(and)g(is)h(followed)e(by) +h(an)h Ff(ifne)e Ft(instr)o(uction)g(\(branch)j(if)f(stack)f(value)h +Fd(6)p Fc(=)f Ft(0\))h(may)0 5350 y(be)d(r)n(eplaced)f(by)h(the)f +Ff(IfInstruction)23 b Ft(with)29 b(its)f(branch)i(tar)n(get)e(r)n +(eplaced)g(by)h(the)f(tar)n(get)g(of)h(the)f Ff(ifne)0 +5463 y Ft(instr)o(uction:)1863 5712 y Fq(18)p eop +%%Page: 19 19 +19 18 bop 109 407 a Ff(InstructionList)48 b(il)53 b(=)i(new)e +(InstructionLis)o(t\()o(\);)109 520 y(...)109 633 y(CodeConstraint)48 +b(constraint)i(=)k(new)g(CodeConstraint)o(\(\))48 b({)218 +746 y(public)k(boolean)f(checkCode\(Instru)o(ct)o(io)o(nH)o(an)o(dle)o +([])d(match\))k({)327 858 y(IfInstruction)d(if1)k(=)h +(\(IfInstruction\))o(ma)o(tch)o([0)o(].)o(ge)o(tI)o(nst)o(ru)o(ct)o(io) +o(n\()o(\);)327 971 y(GOTO)544 b(g)163 b(=)54 b(\(GOTO\)match[2].)o(ge) +o(tIn)o(st)o(ru)o(ct)o(io)o(n\(\))o(;)327 1084 y(return)e +(\(if1.getTarget\()o(\))c(==)54 b(match[3]\))c(&&)709 +1197 y(\(g.getTarget\(\))e(==)54 b(match[4]\);)218 1310 +y(})109 1423 y(};)109 1536 y(FindPattern)c(f)163 b(=)54 +b(new)f(FindPattern\(il\))o(;)109 1649 y(String)325 b(pat)53 +b(=)h("`IfInstruction)o('`)o(IC)o(ON)o(ST)o(_0')o(`G)o(OT)o(O')o(`I)o +(CON)o(ST)o(_1)o('")48 b(+)1091 1762 y("`NOP'\(`IFEQ'|`)o(IF)o(NE)o +('\))o(";)109 1875 y(InstructionHand)o(le)o([])g(match;)109 +1988 y(for\(Instruction)o(Ha)o(nd)o(le)g(ih)54 b(=)g(f.search\(pat,)48 +b(constraint\);)327 2100 y(ih)54 b(!=)g(null;)e(ih)h(=)i +(f.search\(pat,)48 b(match[0],)j(constraint\)\))e({)218 +2213 y(match)j(=)j(f.getMatch\(\);)48 b(//)54 b(Constraint)c(already)h +(checked)218 2326 y(...)218 2439 y(match[0].setTar)o(ge)o(t\(m)o(at)o +(ch)o([5)o(].)o(get)o(Ta)o(rg)o(et)o(\(\))o(\);)d(//)54 +b(Update)e(target)218 2552 y(...)218 2665 y(try)h({)327 +2778 y(il.delete\(match)o([1])o(,)48 b(match[5]\);)218 +2891 y(})54 b(catch\(TargetLos)o(tEx)o(ce)o(pt)o(io)o(n)48 +b(e\))54 b({)g(...)f(})109 3004 y(})146 3325 y Ft(The)26 +b(applied)g(code)f(constraint)h(object)g(ensur)n(es)f(that)h(the)f +(matched)h(code)f(r)n(eally)i(corr)n(esponds)d(to)i(the)0 +3437 y(tar)n(geted)e(expr)n(ession)g(pattern.)35 b(Subsequent)24 +b(application)j(of)e(this)h(algorithm)g(r)n(emoves)f(all)i(unnecessary) +0 3550 y(stack)g(operations)e(and)i(branch)h(instr)o(uctions)e(fr)n(om) +h(the)f(byte)g(code.)40 b(If)27 b(any)g(of)g(the)f(deleted)f(instr)o +(uctions)0 3663 y(is)g(still)h(r)n(efer)n(enced)d(by)i(an)h +Ff(InstructionTar)o(ge)o(te)o(r)19 b Ft(object,)25 b(the)f(r)n(efer)n +(ence)g(has)h(to)g(be)f(updated)g(in)h(the)0 3776 y Ff(catch)p +Ft(-clause.)146 3903 y(Code)g(example)h(A.1)g(gives)f(a)h(verbose)f +(example)h(of)f(how)h(to)f(cr)n(eate)h(a)g(class)g(\002le,)g(while)g +(example)g(A.3)0 4016 y(shows)e(how)i(to)f(implement)h(a)g(simple)g +(peephole)e(optimizer)i(and)g(how)g(to)f(deal)h(with)g +Ff(TargetLost)21 b Ft(ex-)0 4129 y(ceptions.)0 4468 y +Fg(Example)j(application:)91 b Ft(The)22 b(expr)n(ession)109 +4803 y Ff(if\(\(a)52 b(==)i(null\))e(||)i(\(i)g(<)g(2\)\))218 +4916 y(System.out.prin)o(tl)o(n\(")o(Oo)o(op)o(s")o(\);)146 +5237 y Ft(can)31 b(be)f(mapped)f(to)h(both)f(of)h(the)g(chunks)f(of)h +(byte)f(code)g(shown)g(in)i(\002gur)n(e)e(3.3.8.)51 b(The)29 +b(left)i(column)0 5350 y(r)n(epr)n(esents)18 b(the)i(unoptimized)g +(code)g(while)h(the)f(right)g(column)h(displays)f(the)g(same)g(code)g +(after)h(an)g(aggr)n(es-)0 5463 y(sively)i(optimizing)g(peep)e(hole)h +(algorithm)h(has)g(been)f(applied:)1863 5712 y Fq(19)p +eop +%%Page: 20 20 +20 19 bop 0 1311 a Ff(5:)108 b(aload_0)0 1424 y(6:)g(ifnull)434 +b(#13)0 1537 y(9:)108 b(iconst_0)0 1649 y(10:)53 b(goto)544 +b(#14)0 1762 y(13:)53 b(iconst_1)0 1875 y(14:)g(nop)0 +1988 y(15:)g(ifne)544 b(#36)0 2101 y(18:)53 b(iload_1)0 +2214 y(19:)g(iconst_2)0 2327 y(20:)g(if_icmplt)269 b(#27)0 +2440 y(23:)53 b(iconst_0)0 2553 y(24:)g(goto)544 b(#28)0 +2666 y(27:)53 b(iconst_1)0 2779 y(28:)g(nop)0 2891 y(29:)g(ifne)544 +b(#36)0 3004 y(32:)53 b(iconst_0)0 3117 y(33:)g(goto)544 +b(#37)0 3230 y(36:)53 b(iconst_1)0 3343 y(37:)g(nop)0 +3456 y(38:)g(ifeq)544 b(#52)0 3569 y(41:)53 b(getstatic)269 +b(System.out)0 3682 y(44:)53 b(ldc)599 b("Ooops")0 3795 +y(46:)53 b(invokevirtual)c(println)0 3908 y(52:)k(return)1899 +1311 y(10:)g(aload_0)1899 1424 y(11:)g(ifnull)434 b(#19)1899 +1537 y(14:)53 b(iload_1)1899 1650 y(15:)g(iconst_2)1899 +1763 y(16:)g(if_icmpge)269 b(#27)1899 1876 y(19:)53 b(getstatic)269 +b(System.out)1899 1989 y(22:)53 b(ldc)599 b("Ooops")1899 +2102 y(24:)53 b(invokevirtual)c(println)1899 2215 y(27:)k(return)995 +4181 y Fq(Figur)n(e)26 b(6:)31 b(Optimizing)25 b(boolean)h(expr)n +(essions)1863 5712 y(20)p eop +%%Page: 21 21 +21 20 bop 0 410 a Fr(4)143 b(Application)33 b(areas)0 +662 y Ft(Ther)n(e)20 b(ar)n(e)i(many)f(possible)g(application)h(ar)n +(eas)f(for)g Fe(BCEL)i Ft(ranging)e(fr)n(om)g(class)h(br)n(owsers,)e +(pr)n(o\002lers,)g(byte)0 774 y(code)30 b(optimizers,)i(and)e +(compilers)g(to)g(sophisticated)f(r)o(un-time)i(analysis)g(tools)e(and) +i(extensions)d(to)i(the)0 887 y(Java)24 b(language)f([AFM97,)g(MBL97].) +146 1020 y(Compilers)33 b(like)g(the)f(Barat)h(compiler)g([BS98])g(use) +f Fe(BCEL)j Ft(to)d(implement)h(a)g(byte)f(code)g(generating)0 +1133 y(back)22 b(end.)27 b(Other)21 b(possible)g(application)i(ar)n +(eas)f(ar)n(e)f(the)g(static)h(analysis)g(of)g(byte)e(code)h([TK98)q(]) +h(or)f(examin-)0 1246 y(ing)e(the)f(r)o(un-time)i(behavior)f(of)g +(classes)g(by)g(inserting)f(calls)i(to)f(pr)n(o\002ling)g(methods)e +(into)i(the)f(code.)26 b(Further)0 1359 y(examples)h(ar)n(e)h +(extending)e(Java)k(with)e(Eif)n(fel-like)h(assertions)d([FM98],)k +(automated)d(delegation)f([Cos98)q(],)0 1472 y(or)c(with)h(the)f +(concepts)f(of)i(\223Aspect-Oriented)e(Pr)n(ogramming\224)i([KLM)2542 +1439 y Fb(+)2601 1472 y Ft(97)q(].)0 1882 y Fm(4.1)119 +b(Class)30 b(loaders)0 2099 y Ft(Class)d(loaders)f(ar)n(e)h(r)n +(esponsible)f(for)h(loading)g(class)g(\002les)f(fr)n(om)i(the)e(\002le) +h(system)e(or)h(other)g(r)n(esour)n(ces)f(and)0 2212 +y(passing)k(the)g(byte)h(code)f(to)g(the)g(V)-5 b(irtual)31 +b(Machine)g([LB98].)50 b(A)30 b(custom)g Ff(ClassLoader)25 +b Ft(object)30 b(may)g(be)0 2325 y(used)h(to)h(inter)n(cept)g(the)g +(standar)n(d)g(pr)n(ocedur)n(e)f(of)i(loading)f(a)i(class,)h(i.e.)58 +b(the)31 b(system)g(class)i(loader)-7 b(,)35 b(and)0 +2438 y(perform)22 b(some)g(transformations)g(befor)n(e)g(actually)i +(passing)e(the)f(byte)h(code)g(to)g(the)g(JVM.)146 2571 +y(A)28 b(possible)f(scenario)h(is)g(described)f(in)h(\002gur)n(e)g(7:) +39 b(During)28 b(r)o(un-time)g(the)f(V)-5 b(irtual)28 +b(Machine)h(r)n(equests)0 2683 y(a)d(custom)g(class)g(loader)g(to)f +(load)h(a)g(given)g(class.)38 b(But)25 b(befor)n(e)h(the)f(JVM)h +(actually)h(sees)d(the)h(byte)g(code,)h(the)0 2796 y(class)h(loader)f +(makes)f(a)i(\223side-step\224)e(and)h(performs)f(some)g +(transformation)h(to)g(the)f(class.)39 b(T)-8 b(o)26 +b(make)g(sur)n(e)0 2909 y(that)21 b(the)f(modi\002ed)g(byte)g(code)g +(is)i(still)f(valid)i(and)e(does)e(not)h(violate)i(any)f(of)g(the)f +(JVM's)h(r)o(ules)g(it)g(is)g(checked)0 3022 y(by)i(the)e(veri\002er)i +(befor)n(e)f(the)g(JVM)h(\002nally)g(executes)e(it.)0 +4050 y @beginspecial 0 @llx 0 @lly 683 @urx 144 @ury +4590 @rwi @setspecial +%%BeginDocument: eps/classloader.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: classloader.eps +%%Creator: fig2dev Version 3.2 Patchlevel 0-beta3 +%%CreationDate: Thu Mar 18 16:45:56 1999 +%%For: dahm@gromit (Markus Dahm) +%%Orientation: Portrait +%%BoundingBox: 0 0 683 144 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +-55.0 171.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def +%%EndProlog + +$F2psBegin +10 setmiterlimit +n -1000 3712 m -1000 -1000 l 12712 -1000 l 12712 3712 l cp clip + 0.06299 0.06299 sc +% Polyline +7.500 slw +n 1005 450 m 900 450 900 1020 105 arcto 4 {pop} repeat + 900 1125 3045 1125 105 arcto 4 {pop} repeat + 3150 1125 3150 555 105 arcto 4 {pop} repeat + 3150 450 1005 450 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Helvetica ff 210.00 scf sf +1350 900 m +gs 1 -1 sc (Java class file) col0 sh gr +% Polyline +n 3600 450 m 5850 450 l 5850 1125 l 3600 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +4140 855 m +gs 1 -1 sc (Class loader) col0 sh gr +% Polyline +n 6750 450 m 9000 450 l 9000 1125 l 6750 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +7020 855 m +gs 1 -1 sc (Byte code verifier) col0 sh gr +% Polyline +n 9450 450 m 11700 450 l 11700 1125 l 9450 1125 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +9900 900 m +gs 1 -1 sc (Interpreter/JIT) col0 sh gr +% Polyline +n 4950 1575 m 7875 1575 l 7875 2700 l 4950 2700 l cp gs col0 s gr +/Helvetica ff 210.00 scf sf +5175 2475 m +gs 1 -1 sc (Byte code transformations) col0 sh gr +/Courier-Bold ff 210.00 scf sf +5850 2025 m +gs 1 -1 sc (JavaClass) col0 sh gr +% Polyline +gs clippath +3453 735 m 3573 765 l 3453 795 l 3615 795 l 3615 735 l cp +clip +n 3150 765 m 3600 765 l gs col0 s gr gr + +% arrowhead +n 3453 735 m 3573 765 l 3453 795 l 3453 765 l 3453 735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +9303 735 m 9423 765 l 9303 795 l 9465 795 l 9465 735 l cp +clip +n 9000 765 m 9450 765 l gs col0 s gr gr + +% arrowhead +n 9303 735 m 9423 765 l 9303 795 l 9303 765 l 9303 735 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6105 1428 m 6075 1548 l 6045 1428 l 6045 1590 l 6105 1590 l cp +clip +n 5850 765 m 6075 765 l 6075 1575 l gs col0 s gr gr + +% arrowhead +n 6105 1428 m 6075 1548 l 6045 1428 l 6075 1428 l 6105 1428 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6603 735 m 6723 765 l 6603 795 l 6765 795 l 6765 735 l cp +clip +n 6525 1575 m 6525 765 l 6750 765 l gs col0 s gr gr + +% arrowhead +n 6603 735 m 6723 765 l 6603 795 l 6603 765 l 6603 735 l cp gs 0.00 setgray ef gr col0 s +$F2psEnd +rs + +%%EndDocument + @endspecial 1414 4253 a Fq(Figur)n(e)26 b(7:)k(Class)25 +b(loaders)146 4672 y Ft(Using)i(class)h(loaders)f(is)g(an)h(elegant)f +(way)g(of)h(extending)d(the)i(Java)i(V)-5 b(irtual)28 +b(Machine)g(with)g(new)e(fea-)0 4785 y(tur)n(es)20 b(without)g +(actually)i(modifying)f(it.)27 b(This)21 b(concept)f(enables)h +(developers)e(to)h(use)g Fs(load-time)j(r)n(e\003ection)g +Ft(to)0 4898 y(implement)28 b(their)f(ideas)h(as)g(opposed)d(to)j(the)f +(static)h(r)n(e\003ection)g(supported)d(by)j(the)f(Java)j(Re\003ection) +d(API)0 5011 y([Jav98)r(].)45 b(Load-time)28 b(transformations)g +(supply)f(the)g(user)g(with)h(a)h(new)f(level)h(of)f(abstraction.)45 +b(He)27 b(is)i(not)0 5124 y(strictly)24 b(tied)f(to)h(the)f(static)h +(constraints)f(of)h(the)g(original)h(authors)e(of)h(the)f(classes)h +(but)g(may)g(customize)g(the)0 5237 y(applications)i(with)f(thir)n +(d-party)g(code)g(in)g(or)n(der)g(to)f(bene\002t)h(fr)n(om)h(new)e +(featur)n(es.)36 b(Such)25 b(transformations)0 5350 y(may)j(be)g +(executed)d(on)j(demand)f(and)h(neither)e(interfer)n(e)h(with)h(other)e +(users,)h(nor)h(alter)f(the)g(original)i(byte)0 5463 +y(code.)e(In)22 b(fact,)h(class)h(loaders)d(may)i(even)f(cr)n(eate)h +(classes)f Fs(ad)i(hoc)f Ft(without)f(loading)h(a)g(\002le)g(at)f(all.) +1863 5712 y Fq(21)p eop +%%Page: 22 22 +22 21 bop 0 407 a Fg(4.1.1)99 b(Example:)30 b(Poor)25 +b(Man')-5 b(s)24 b(Genericity)0 587 y Ft(The)17 b(\223Poor)g(Man's)h +(Genericity\224)g(pr)n(oject)f([BD98)r(])h(that)f(extends)f(Java)j +(with)f(parameterized)f(classes,)h(for)f(ex-)0 700 y(ample,)j(uses)e +Fe(BCEL)i Ft(in)f(two)g(places)g(to)g(generate)e(instances)i(of)g +(parameterized)f(classes:)26 b(During)19 b(compile-)0 +813 y(time)36 b(\(the)f(standar)n(d)g Ff(javac)f Ft(with)i(some)f +(slightly)g(changed)g(classes\))h(and)g(at)g(r)o(un-time)f(using)h(a)g +(cus-)0 926 y(tom)28 b(class)g(loader)-7 b(.)43 b(The)28 +b(compiler)g(puts)f(some)g(additional)h(type)e(information)j(into)f +(class)g(\002les)g(which)g(is)0 1039 y(evaluated)e(at)h(load-time)f(by) +g(the)g(class)h(loader)-7 b(.)38 b(The)26 b(class)h(loader)e(performs)h +(some)f(transformations)g(on)0 1152 y(the)i(loaded)g(class)i(and)e +(passes)g(them)g(to)g(the)g(VM.)h(The)f(following)h(algorithm)g +(illustrates)g(how)f(the)g(load)0 1264 y(method)21 b(of)i(the)f(class)h +(loader)f(ful\002lls)i(the)e(r)n(equest)f(for)h(a)h(parameterized)f +(class,)h(e.g.)k Ff(Stack)127 1487 y Ft(1.)49 +b(Sear)n(ch)19 b(for)g(class)g Ff(Stack)p Ft(,)f(load)h(it,)g(and)g +(check)g(for)g(a)g(certain)g(class)h(attribute)e(containing)h +(additional)244 1600 y(type)i(information.)28 b(I.e.)f(the)22 +b(attribute)g(de\002nes)f(the)h(\223r)n(eal\224)i(name)f(of)g(the)e +(class,)i(i.e.)28 b Ff(Stack)p Ft(.)127 1794 y(2.)49 +b(Replace)28 b(all)h(occurr)n(ences)e(and)h(r)n(efer)n(ences)f(to)g +(the)g(formal)i(type)d Ff(A)i Ft(with)g(r)n(efer)n(ences)f(to)g(the)g +(actual)244 1907 y(type)21 b Ff(String)p Ft(.)k(For)d(example)g(the)g +(method)353 2168 y Ff(void)53 b(push\(A)f(obj\))g({)i(...)g(})244 +2429 y Ft(becomes)353 2690 y Ff(void)f(push\(String)c(obj\))k({)h(...)f +(})127 2952 y Ft(3.)c(Return)21 b(the)h(r)n(esulting)g(class)h(to)f +(the)g(V)-5 b(irtual)23 b(Machine.)0 3293 y Fr(References)0 +3508 y Ft([AFM97])109 b(O.)29 b(Agesen,)f(S.)h(N.)f(Fr)n(eund,)h(and)g +(J.)h(C.)f(Mitchell.)54 b(Adding)27 b(T)-8 b(ype)28 b(Parameterization) +i(to)e(the)467 3621 y(Java)c(Language.)31 b(In)23 b Fs(Pr)n(oceedings)i +(OOPSLA)-5 b('97)p Ft(,)21 b(Atlanta,)i(GA,)f(1997.)0 +3815 y([AP98])191 b(D.)24 b(Antonioli)f(and)h(M.)g(Pilz.)37 +b(Statistische)23 b(Analyse)g(von)h(Java-Class\002les.)38 +b(In)23 b(Clemens)h(Cap,)467 3928 y(editor)-7 b(,)21 +b Fs(Pr)n(oceedings)k(JIT'98)p Ft(.)f(Springer)-7 b(,)22 +b(1998.)0 4122 y([BD98])191 b(B.)21 b(Bokowski)f(and)i(M.)f(Dahm.)32 +b(Poor)21 b(Man's)h(Genericity)g(for)f(Java.)33 b(In)21 +b(Clemens)h(Cap,)g(editor)-7 b(,)467 4235 y Fs(Pr)n(oceedings)25 +b(JIT'98)p Ft(.)f(Springer)-7 b(,)21 b(1998.)0 4429 y([BS98])213 +b(B.)28 b(Bokowski)f(and)i(A.)f(Spiegel.)51 b(Barat)29 +b(\226)h(A)e(Fr)n(ont-End)f(for)i(Java.)54 b(T)-8 b(echnical)30 +b(r)n(eport,)f(Fr)n(eie)467 4542 y(Universit)8 b(\250)-38 +b(at)22 b(Berlin,)g(1998.)0 4736 y([CCK98])123 b(Geof)n(f)24 +b(Cohen,)f(Jef)n(f)h(Chase,)g(and)f(David)i(Kaminsky)-10 +b(.)35 b(Automatic)24 b(Pr)n(ogram)f(T)-8 b(ransformation)467 +4849 y(with)22 b(JOIE.)33 b(In)22 b Fs(Pr)n(oceedings)j(USENIX)c +(Annual)h(T)-10 b(echnical)23 b(Symposium)p Ft(,)g(1998.)0 +5043 y([CCZ97])128 b(Suzanne)34 b(Collin,)39 b(Dominique)d(Colnet,)h +(and)e(Olivier)h(Zendra.)70 b(T)-8 b(ype)33 b(Infer)n(ence)h(for)h +(Late)467 5156 y(Binding.)22 b(The)g(SmallEif)n(fel)j(Compiler.)32 +b(In)23 b Fs(Pr)n(oceedings)i(JMLC'97)p Ft(,)e(1997.)0 +5350 y([Cos98])164 b(Pascal)42 b(Costanza.)90 b Fs(The)41 +b(ClassFilters)i(package)p Ft(.)91 b(Universit)8 b(\250)-38 +b(at)41 b(Bonn,)i Ff(http://www.cs.)467 5463 y(uni-)t(bonn.de/\230co)o +(st)o(an)o(za)o(/Cl)o(as)o(sF)o(il)o(te)o(rs/)o Ft(,)17 +b(1998.)1863 5712 y Fq(22)p eop +%%Page: 23 23 +23 22 bop 0 407 a Ft([FM98])180 b(C.)29 b(Fischer)f(and)g(D.)h +(Meemken.)50 b(JaW)-8 b(a:)41 b(Java)30 b(with)f(Assertions.)49 +b(In)28 b(Clemens)h(Cap,)h(editor)-7 b(,)467 520 y Fs(Pr)n(oceedings)25 +b(JIT'98)p Ft(.)f(Springer)-7 b(,)21 b(1998.)0 707 y([GHJV95])76 +b(E.)17 b(Gamma,)k(R.)d(Helm,)h(R.)f(Johnson,)g(and)g(J.)g(Vlissides.)k +Fs(Design)d(Patterns:)27 b(Elements)19 b(of)g(Reusable)467 +820 y(Object-Oriented)25 b(Softwar)n(e)p Ft(.)34 b(Addison-W)-8 +b(esley)e(,)19 b(1995.)0 1008 y([GJS96])170 b(J.)32 b(Gosling,)j(B.)d +(Joy)-10 b(,)34 b(and)f(G.)f(Steele.)63 b Fs(The)33 b(Java)h(Language)f +(Speci\002cation)p Ft(.)66 b(Addison-W)-8 b(esley)e(,)467 +1121 y(1996.)0 1308 y([Jav98])191 b(JavaSoft.)71 b Fs(Re\003ection)35 +b(API)p Ft(.)70 b Ff(http://java.sun)o(.c)o(om)o(/pr)o(od)o(uc)o(ts)o +(/j)o(dk/)o(1.)o(1/)o(do)o(cs)o(/)467 1421 y(guide/reflecti)o(on/)o +Ft(,)17 b(1998.)0 1609 y([KH98])175 b(Ralph)33 b(Keller)f(and)h(Urs)f +(H)10 b(\250)-40 b(olzle.)65 b(Binary)32 b(Component)g(Adaptation.)63 +b(In)33 b(Eric)g(Jul,)i(editor)-7 b(,)467 1722 y Fs(Pr)n(oceedings)25 +b(ECOOP'98)p Ft(.)d(Springer)-7 b(,)21 b(1998.)0 1910 +y([KLM)238 1877 y Fb(+)297 1910 y Ft(97])50 b(Gr)n(egor)27 +b(Kiczales,)i(John)e(Lamping,)h(Anurag)f(Mendhekar)-7 +b(,)27 b(Chris)h(Maeda,)g(Cristina)g(Lopes,)467 2022 +y(Jean-Mar)n(c)f(Loingtier)-7 b(,)26 b(and)g(John)g(Irwin.)43 +b(Aspect-Oriented)24 b(Pr)n(ogramming.)43 b(T)-8 b(echnical)27 +b(r)n(e-)467 2135 y(port,)21 b(Xer)n(ox)h(Palo)h(Alto)f(Resear)n(ch)g +(Center)-7 b(,)22 b(1997.)0 2323 y([LB98])205 b(Sheng)23 +b(Lian)i(and)g(Gilad)h(Bracha.)39 b(Dynamic)26 b(Class)g(Loading)d(in)i +(the)f(Java)j(V)-5 b(irtual)25 b(Machine.)467 2436 y(In)d +Fs(Pr)n(oceedings)j(OOPSLA)-5 b('98)p Ft(,)22 b(1998.)0 +2623 y([L)-8 b(Y97])208 b(T)-5 b(im)35 b(Lindholm)f(and)g(Frank)g(Y)-8 +b(ellin.)69 b Fs(The)35 b(Java)h(V)-7 b(irtual)35 b(Machine)g +(Speci\002cation)p Ft(.)71 b(Addison-)467 2736 y(W)-8 +b(esley)e(,)20 b(1997.)0 2924 y([LZ98])200 b(Han)25 b(Bok)f(Lee)f(and)i +(Benjamin)h(G.)f(Zorn.)38 b(BIT)-5 b(:)24 b(A)h(T)-8 +b(ool)24 b(for)h(Instr)o(umenting)e(Java)j(Bytecodes.)467 +3037 y(In)c Fs(Pr)n(oceedings)j(USENIX)c(Symposium)j(on)e(Internet)i(T) +-10 b(echnologies)25 b(and)e(Systems)p Ft(,)h(1998.)0 +3225 y([MBL97])119 b(A.C.)24 b(Myers,)g(J.)h(A.)g(Bank,)f(and)h(B.)f +(Liskov)-10 b(.)39 b(Parameterized)24 b(T)-8 b(ypes)23 +b(for)i(Java.)41 b(In)25 b Fs(Pr)n(oceedings)467 3337 +y(POPL)m('97)p Ft(,)c(Paris,)i(France,)f(1997.)0 3525 +y([MD97])161 b(J.)23 b(Meyer)e(and)h(T)-7 b(.)23 b(Downing.)32 +b Fs(Java)24 b(V)-7 b(irtual)24 b(Machine)p Ft(.)33 b(O'Reilly)-10 +b(,)23 b(1997.)0 3713 y([Sil98])217 b(Shawn)28 b(Silverman.)51 +b Fs(The)28 b(class\002le)i(API)p Ft(.)50 b(University)27 +b(of)h(Manitoba,)i Ff(http://Meurrens)o(.)467 3826 y(ML.org/ip-)t +(Links)o(/j)o(av)o(a/)o(cod)o(eE)o(ng)o(in)o(ee)o(rin)o(g/)o(vi)o(ew)o +(er)o(s.h)o(tm)o(l)p Ft(,)16 b(1998.)0 4013 y([T)-8 b(af96])194 +b(T)-8 b(ucker)23 b(T)-8 b(aft.)37 b(Pr)n(ogramming)25 +b(the)e(Internet)f(in)j(Ada95.)38 b(In)24 b Fs(Pr)n(oceedings)j +(Ada-Eur)n(ope)f(Interna-)467 4126 y(tional)e(Confer)n(ence)g(on)e +(Reliable)j(Softwar)n(e)f(T)-10 b(echnologies)p Ft(,)25 +b(1996.)0 4314 y([TK98])195 b(M.)35 b(Thies)f(and)h(U.)f(Kastens.)71 +b(Statische)34 b(Analyse)g(von)h(Bibliotheken)f(als)i(Gr)o(undlage)f +(dy-)467 4427 y(namischer)23 b(Optimier)o(ung.)32 b(In)23 +b(Clemens)f(Cap,)h(editor)-7 b(,)21 b Fs(Pr)n(oceedings)26 +b(JIT'98)p Ft(.)d(Springer)-7 b(,)22 b(1998.)0 4614 y([Y)-8 +b(ou98])159 b(Matt)42 b(T)-7 b(.)42 b(Y)-8 b(ourst.)92 +b Fs(Inside)44 b(Java)f(Class)g(Files)p Ft(.)96 b(Laserstars)40 +b(T)-8 b(echnologies,)45 b Ff(http://www.)467 4727 y(laserstars.com)o +(/ar)o(ti)o(cl)o(es)o(/d)o(dj/)o(in)o(si)o(de)o(jc)o(f/)p +Ft(,)16 b(1998.)1863 5712 y Fq(23)p eop +%%Page: 24 24 +24 23 bop 0 410 a Fr(A)143 b(Code)35 b(examples)e(for)i(the)g(ClassGen) +f(API)0 658 y Fm(A.1)119 b(HelloW)-9 b(orldBuilder)i(.java)0 +835 y Ft(The)18 b(following)h(Java)i(pr)n(ogram)e(r)n(eads)f(a)i(name)f +(fr)n(om)g(the)g(standar)n(d)f(input)g(and)h(prints)f(a)i(friendly)f +(\223Hello\224.)0 948 y(Since)31 b(the)f Ff(readLine\(\))d +Ft(method)j(may)h(thr)n(ow)g(an)g Ff(IOException)26 b +Ft(it)32 b(is)f(enclosed)e(by)i(a)h Ff(try-catch)0 1060 +y Ft(block.)0 1268 y Ff(import)52 b(java.io.*;)0 1494 +y(public)g(class)g(HelloWorld)e({)109 1607 y(public)i(static)g(void)g +(main\(String[])d(argv\))j({)218 1720 y(BufferedReader)c(in)54 +b(=)g(new)f(BufferedReader\()o(new)1418 1833 y(InputStreamRead)o(er)o +(\(Sy)o(st)o(em)o(.i)o(n\))o(\);)218 1946 y(String)f(name)h(=)h(null;) +218 2172 y(try)f({)327 2284 y(System.out.prin)o(t\(")o(Pl)o(ea)o(se)48 +b(enter)k(your)h(name>)f("\);)327 2397 y(name)h(=)h(in.readLine\(\);) +218 2510 y(})g(catch\(IOExcepti)o(on)48 b(e\))54 b({)g(return;)d(})218 +2736 y(System.out.prin)o(tl)o(n\(")o(He)o(ll)o(o,)d(")54 +b(+)g(name\);)109 2849 y(})0 2962 y(})0 3343 y Fm(A.2)119 +b(HelloW)-9 b(orldBuilder)i(.java)0 3520 y Ft(W)f(e)28 +b(will)i(sketch)e(her)n(e)g(how)g(the)g(above)h(Java)i(class)e(can)h +(be)f(cr)n(eated)f(fr)n(om)h(the)f(scratch)h(using)g(the)f +Fe(BCEL)0 3633 y Ft(API.)h(For)g(ease)g(of)h(r)n(eading)g(we)f(will)i +(use)e(textual)g(signatur)n(es)g(and)h(not)f(cr)n(eate)h(them)f +(dynamically)-10 b(.)51 b(For)0 3746 y(example,)22 b(the)g(signatur)n +(e)109 3954 y Ff("\(Ljava/lang/St)o(ri)o(ng)o(;\)L)o(ja)o(va)o(/l)o(an) +o(g/S)o(tr)o(in)o(gB)o(uf)o(fer)o(;")146 4161 y Ft(would)g(actually)i +(be)f(cr)n(eated)f(with)109 4369 y Ff(Type.getMethodS)o(ig)o(na)o(tur)o +(e\()o(Ty)o(pe)o(.S)o(TRI)o(NG)o(BU)o(FF)o(ER)o(,)49 +b(new)k(Type[])f({)i(Type.STRING)49 b(}\);)0 4627 y Fg(A.2.1)99 +b(Initialization:)0 4803 y Ft(First)22 b(we)g(cr)n(eate)g(an)i(empty)d +(class)i(and)g(an)g(instr)o(uction)f(list:)109 5011 y +Ff(ClassGen)106 b(cg)53 b(=)h(new)f(ClassGen\("HelloW)o(or)o(ld)o(",)48 +b("java.lang.Obje)o(ct)o(",)1636 5124 y("",)h(ACC_PUBLIC)h +(|)k(ACC_SUPER,)1636 5237 y(null\);)109 5350 y(ConstantPoolGen)48 +b(cp)53 b(=)i(cg.getConstant)o(Po)o(ol)o(\(\))o(;)49 +b(//)k(cg)h(creates)d(constant)g(pool)109 5463 y(InstructionList)d(il) +53 b(=)i(new)e(InstructionLis)o(t\()o(\);)p eop +%%Page: 25 25 +25 24 bop 146 407 a Ft(W)-8 b(e)26 b(then)f(cr)n(eate)i(the)e(main)j +(method,)d(supplying)g(the)h(method's)f(name)h(and)h(the)e(symbolic)i +(type)e(sig-)0 520 y(natur)n(e)d(encoded)f(with)i Ff(Type)e +Ft(objects.)109 705 y Ff(MethodGen)105 b(mg)54 b(=)g(new)f +(MethodGen\(ACC_S)o(TA)o(TI)o(C)48 b(|)55 b(ACC_PUBLIC,//)48 +b(access)k(flags)1745 818 y(Type.VOID,)760 b(//)53 b(return)f(type)1745 +931 y(new)i(Type[])d({)655 b(//)53 b(argument)e(types)1855 +1044 y(new)i(ArrayType\(Type)o(.S)o(TRI)o(NG)o(,)48 b(1\))54 +b(},)1745 1156 y(new)g(String[])d({)j("argv")d(},)j(//)g(arg)f(names) +1745 1269 y("main",)f("HelloWorld",)212 b(//)54 b(method,)d(class)1745 +1382 y(il,)j(cp\);)109 1495 y(InstructionFact)o(or)o(y)48 +b(factory)k(=)i(new)f(InstructionFact)o(or)o(y\()o(cg\))o(;)146 +1680 y Ft(W)-8 b(e)22 b(de\002ne)f(some)h(often)g(use)f(types:)109 +1865 y Ff(ObjectType)50 b(i_stream)h(=)j(new)f(ObjectType\("jav)o(a.i)o +(o.)o(In)o(pu)o(tS)o(tre)o(am)o("\))o(;)109 1978 y(ObjectType)d +(p_stream)h(=)j(new)f(ObjectType\("jav)o(a.i)o(o.)o(Pr)o(in)o(tS)o(tre) +o(am)o("\))o(;)0 2233 y Fg(A.2.2)99 b(Create)24 b(variables)h +Fa(in)f Fg(and)h Fa(name)p Fg(:)0 2410 y Ft(W)-8 b(e)16 +b(call)j(the)e(constr)o(uctors,)f(i.e.)26 b(execute)15 +b Ff(BufferedReader\(I)o(np)o(ut)o(St)o(rea)o(mR)o(ea)o(de)o(r\()o(Sys) +o(te)o(m.)o(in)o(\)\))o Ft(.)0 2522 y(The)j(r)n(efer)n(ence)h(to)g(the) +f Ff(BufferedReader)13 b Ft(object)19 b(stays)f(on)h(top)f(of)h(the)g +(stack)g(and)g(is)g(stor)n(ed)f(in)h(the)g(newly)0 2635 +y(allocated)k Ff(in)f Ft(variable.)109 2820 y Ff(il.append\(facto)o(ry) +o(.c)o(rea)o(te)o(Ne)o(w\()o("j)o(ava)o(.i)o(o.)o(Bu)o(ff)o(ere)o(dR)o +(ea)o(de)o(r")o(\)\);)109 2933 y(il.append\(Instr)o(uc)o(ti)o(onC)o(on) +o(st)o(an)o(ts)o(.DU)o(P\))o(;)48 b(//)54 b(Use)f(predefined)d +(constant)109 3046 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(Ne)o(w\()o +("j)o(ava)o(.i)o(o.)o(In)o(pu)o(tSt)o(re)o(am)o(Re)o(ad)o(er")o(\)\))o +(;)109 3159 y(il.append\(Instr)o(uc)o(ti)o(onC)o(on)o(st)o(an)o(ts)o +(.DU)o(P\))o(;)109 3272 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(Fi)o +(el)o(dA)o(cce)o(ss)o(\(")o(ja)o(va)o(.la)o(ng)o(.S)o(ys)o(te)o(m",)e +("in",)k(i_stream,)2073 3385 y(Constants.GETS)o(TA)o(TIC)o(\)\))o(;)109 +3498 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o(ke)o(\("j)o +(av)o(a.)o(io)o(.I)o(npu)o(tS)o(tr)o(ea)o(mR)o(ead)o(er)o(",)c +("",)1800 3611 y(Type.VOID,)i(new)j(Type[])f({)i(i_stream)d(},) +1800 3724 y(Constants.INVOK)o(ES)o(PE)o(CI)o(AL\))o(\);)109 +3837 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o(ke)o(\("j)o +(av)o(a.)o(io)o(.B)o(uff)o(er)o(ed)o(Re)o(ad)o(er")o(,)d("",)j +(Type.VOID,)1800 3950 y(new)i(Type[])f({new)h(ObjectType\("ja)o(va)o +(.io)o(.R)o(ea)o(de)o(r")o(\)},)1800 4062 y(Constants.INVOK)o(ES)o(PE)o +(CI)o(AL\))o(\);)109 4288 y(LocalVariableGe)o(n)48 b(lg)54 +b(=)218 4401 y(mg.addLocalVari)o(ab)o(le\()o("i)o(n")o(,)1309 +4514 y(new)f(ObjectType\("jav)o(a.i)o(o.)o(Bu)o(ff)o(er)o(edR)o(ea)o +(de)o(r")o(\),)48 b(null,)k(null\);)109 4627 y(int)h(in)h(=)g +(lg.getIndex\(\);)109 4740 y(lg.setStart\(il.)o(ap)o(pe)o(nd\()o(ne)o +(w)48 b(ASTORE\(in\)\)\);)h(//)54 b(`i')f(valid)f(from)h(here)146 +4925 y Ft(Cr)n(eate)23 b(local)h(variable)h Ff(name)c +Ft(and)h(initialize)j(it)e(to)f Ff(null)p Ft(.)109 5110 +y Ff(lg)54 b(=)g(mg.addLocalVar)o(iab)o(le)o(\(")o(na)o(me)o(",)48 +b(Type.STRING,)h(null,)j(null\);)109 5223 y(int)h(name)g(=)h +(lg.getIndex\(\);)109 5336 y(il.append\(Instr)o(uc)o(ti)o(onC)o(on)o +(st)o(an)o(ts)o(.AC)o(ON)o(ST)o(_N)o(UL)o(L\);)109 5449 +y(lg.setStart\(il.)o(ap)o(pe)o(nd\()o(ne)o(w)48 b(ASTORE\(name\)\)\);)g +(//)54 b(`name')d(valid)i(from)f(here)p eop +%%Page: 26 26 +26 25 bop 0 407 a Fg(A.2.3)99 b(Create)24 b(try-catch)i(block)0 +584 y Ft(W)-8 b(e)31 b(r)n(emember)g(the)g(start)g(of)h(the)f(block,)j +(r)n(ead)e(a)g(line)g(fr)n(om)h(the)e(standar)n(d)g(input)g(and)h(stor) +n(e)e(it)i(into)g(the)0 697 y(variable)25 b Ff(name)p +Ft(.)109 913 y Ff(InstructionHand)o(le)48 b(try_start)i(=)218 +1026 y(il.append\(facto)o(ry)o(.cr)o(ea)o(te)o(Fi)o(el)o(dAc)o(ce)o(ss) +o(\(")o(ja)o(va.)o(la)o(ng)o(.S)o(ys)o(tem)o(",)e("out",)k(p_stream,) +2182 1139 y(Constants.GETS)o(TAT)o(IC)o(\)\))o(;)109 +1365 y(il.append\(new)d(PUSH\(cp,)i("Please)g(enter)h(your)h(name>)f +("\)\);)109 1478 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o +(ke)o(\("j)o(av)o(a.)o(io)o(.P)o(rin)o(tS)o(tr)o(ea)o(m")o(,)d +("print",)h(Type.VOID,)1800 1591 y(new)j(Type[])f({)i(Type.STRING)c(},) +1800 1704 y(Constants.INVOK)o(EV)o(IR)o(TU)o(AL\))o(\);)109 +1817 y(il.append\(new)f(ALOAD\(in\)\);)109 1930 y(il.append\(facto)o +(ry)o(.c)o(rea)o(te)o(In)o(vo)o(ke)o(\("j)o(av)o(a.)o(io)o(.B)o(uff)o +(er)o(ed)o(Re)o(ad)o(er")o(,)f("readLine",)1800 2042 +y(Type.STRING,)h(Type.NO_ARGS,)1800 2155 y(Constants.INVOK)o(EV)o(IR)o +(TU)o(AL\))o(\);)109 2268 y(il.append\(new)g(ASTORE\(name\)\);)146 +2485 y Ft(Upon)22 b(normal)h(execution)f(we)g(jump)g(behind)h +(exception)e(handler)-7 b(,)22 b(the)g(tar)n(get)g(addr)n(ess)f(is)h +(not)g(known)0 2598 y(yet.)109 2815 y Ff(GOTO)53 b(g)h(=)g(new)f +(GOTO\(null\);)109 2928 y(InstructionHand)o(le)48 b(try_end)j(=)j +(il.append\(g\);)146 3144 y Ft(W)-8 b(e)22 b(add)g(the)g(exception)g +(handler)g(which)h(simply)g(r)n(eturns)e(fr)n(om)i(the)f(method.)109 +3361 y Ff(InstructionHand)o(le)48 b(handler)j(=)j(il.append\(Instru)o +(ct)o(io)o(nC)o(on)o(sta)o(nt)o(s.)o(RE)o(TU)o(RN\))o(;)109 +3474 y(mg.addException)o(Ha)o(nd)o(ler)o(\(t)o(ry)o(_s)o(ta)o(rt,)48 +b(try_end,)j(handler,)f("java.io.IOExcep)o(ti)o(on)o("\))o(;)146 +3691 y Ft(\223Normal\224)24 b(code)e(continues,)f(now)h(we)g(can)i(set) +d(the)h(branch)i(tar)n(get)e(of)g(the)g(GOT)n(O.)109 +3908 y Ff(InstructionHand)o(le)48 b(ih)54 b(=)218 4020 +y(il.append\(facto)o(ry)o(.cr)o(ea)o(te)o(Fi)o(el)o(dAc)o(ce)o(ss)o +(\(")o(ja)o(va.)o(la)o(ng)o(.S)o(ys)o(tem)o(",)48 b("out",)k(p_stream,) +2182 4133 y(Constants.GETS)o(TAT)o(IC)o(\)\))o(;)109 +4246 y(g.setTarget\(ih\))o(;)0 4505 y Fg(A.2.4)99 b(Printing)25 +b(\224Hello\224)0 4682 y Ft(String)d(concatenation)h(compiles)f(to)g +Ff(StringBuffer)17 b Ft(operations.)109 4898 y Ff(il.append\(facto)o +(ry)o(.c)o(rea)o(te)o(Ne)o(w\()o(Ty)o(pe.)o(ST)o(RI)o(NG)o(BU)o(FFE)o +(R\))o(\);)109 5011 y(il.append\(Instr)o(uc)o(ti)o(onC)o(on)o(st)o(an)o +(ts)o(.DU)o(P\))o(;)109 5124 y(il.append\(new)49 b(PUSH\(cp,)i("Hello,) +g("\)\);)109 5237 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o +(ke)o(\("j)o(av)o(a.)o(la)o(ng)o(.St)o(ri)o(ng)o(Bu)o(ff)o(er")o(,)d +("",)1800 5350 y(Type.VOID,)i(new)j(Type[])f({)i(Type.STRING)c +(},)1800 5463 y(Constants.INVOK)o(ES)o(PE)o(CI)o(AL\))o(\);)p +eop +%%Page: 27 27 +27 26 bop 109 407 a Ff(il.append\(new)49 b(ALOAD\(name\)\);)109 +520 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o(ke)o(\("j)o(av) +o(a.)o(la)o(ng)o(.St)o(ri)o(ng)o(Bu)o(ff)o(er")o(,)f("append",)1800 +633 y(Type.STRINGBUFF)o(ER)o(,)g(new)54 b(Type[])d({)j(Type.STRING)c +(},)1800 746 y(Constants.INVOK)o(EV)o(IR)o(TU)o(AL\))o(\);)109 +858 y(il.append\(facto)o(ry)o(.c)o(rea)o(te)o(In)o(vo)o(ke)o(\("j)o(av) +o(a.)o(la)o(ng)o(.St)o(ri)o(ng)o(Bu)o(ff)o(er")o(,)e("toString",)1800 +971 y(Type.STRING,)h(Type.NO_ARGS,)1800 1084 y(Constants.INVOK)o(EV)o +(IR)o(TU)o(AL\))o(\);)109 1310 y(il.append\(facto)o(ry)o(.c)o(rea)o(te) +o(In)o(vo)o(ke)o(\("j)o(av)o(a.)o(io)o(.P)o(rin)o(tS)o(tr)o(ea)o(m")o +(,)g("println",)1800 1423 y(Type.VOID,)h(new)j(Type[])f({)i +(Type.STRING)c(},)1800 1536 y(Constants.INVOK)o(EV)o(IR)o(TU)o(AL\))o +(\);)109 1649 y(il.append\(Instr)o(uc)o(ti)o(onC)o(on)o(st)o(an)o(ts)o +(.RE)o(TU)o(RN)o(\);)0 1908 y Fg(A.2.5)99 b(Finalization)0 +2085 y Ft(Finally)-10 b(,)26 b(we)e(have)i(to)e(set)g(the)g(stack)g +(size,)i(which)f(normally)h(would)e(be)h(computed)f(on)g(the)g(\003y)h +(and)g(add)g(a)0 2197 y(default)d(constr)o(uctor)g(method)f(to)h(the)g +(class,)h(which)g(is)g(empty)e(in)i(this)f(case.)109 +2418 y Ff(mg.setMaxStack\()o(5\))o(;)109 2531 y(cg.addMethod\(mg)o(.g)o +(et)o(Met)o(ho)o(d\()o(\)\))o(;)109 2644 y(il.dispose\(\);)49 +b(//)k(Allow)g(instruction)c(handles)j(to)h(be)h(reused)109 +2756 y(cg.addEmptyCons)o(tr)o(uc)o(tor)o(\(A)o(CC)o(_P)o(UB)o(LIC)o +(\);)146 2977 y Ft(Last)22 b(but)h(not)f(least)g(we)g(dump)g(the)g +Ff(JavaClass)c Ft(object)23 b(to)f(a)h(\002le.)109 3197 +y Ff(try)53 b({)218 3310 y(cg.getJavaClass)o(\(\))o(.du)o(mp)o(\(")o +(He)o(ll)o(oWo)o(rl)o(d.)o(cl)o(as)o(s"\))o(;)109 3423 +y(})h(catch\(java.io.I)o(OE)o(xce)o(pt)o(io)o(n)48 b(e\))54 +b({)g(System.err.prin)o(tl)o(n\()o(e\);)48 b(})0 3711 +y Fm(A.3)119 b(Peephole.java)0 3888 y Ft(This)20 b(class)h(implements)e +(a)i(simple)f(peephole)e(optimizer)j(that)f(r)n(emoves)f(any)h(NOP)h +(instr)o(uctions)e(fr)n(om)i(the)0 4001 y(given)i(class.)0 +4221 y Ff(import)52 b(java.io.*;)0 4334 y(import)g(de.fub.bytecod)o +(e.c)o(la)o(ss)o(fi)o(le)o(.*;)0 4447 y(import)g(de.fub.bytecod)o(e.g)o +(en)o(er)o(ic)o(.*)o(;)0 4560 y(import)g(de.fub.bytecod)o(e.R)o(ep)o +(os)o(it)o(or)o(y;)0 4785 y(public)g(class)g(Peephole)f({)109 +4898 y(public)h(static)g(void)g(main\(String[])d(argv\))j({)218 +5011 y(try)h({)327 5124 y(/*)h(Load)f(the)g(class)f(from)h(CLASSPATH.) +382 5237 y(*/)327 5350 y(JavaClass)378 b(clazz)161 b(=)54 +b(Repository.looku)o(pC)o(la)o(ss)o(\(ar)o(gv)o([0)o(]\))o(;)327 +5463 y(Method[])433 b(methods)51 b(=)j(clazz.getMethods)o(\(\))o(;)p +eop +%%Page: 28 28 +28 27 bop 327 407 a Ff(ConstantPoolGen)48 b(cp)326 b(=)54 +b(new)g(ConstantPoolGe)o(n\()o(cl)o(azz)o(.g)o(et)o(Co)o(ns)o(tan)o(tP) +o(oo)o(l\()o(\)\))o(;)327 633 y(for\(int)e(i=0;)g(i)i(<)h +(methods.length)o(;)48 b(i++\))53 b({)436 746 y(MethodGen)e(mg)381 +b(=)54 b(new)f(MethodGen\(metho)o(ds)o([i)o(],)2345 858 +y(clazz.getClassNa)o(me)o(\(\))o(,)48 b(cp\);)436 971 +y(Method)216 b(stripped)51 b(=)j(removeNOPs\(mg\))o(;)436 +1197 y(if\(stripped)c(!=)k(null\))270 b(//)54 b(Any)f(NOPs)g(stripped?) +545 1310 y(methods[i])d(=)55 b(stripped;)50 b(//)k(Overwrite)c(with)j +(stripped)e(method)327 1423 y(})327 1649 y(/*)j(Dump)f(the)g(class)f +(to)i(_.class)382 1762 y(*/)327 1875 y(clazz.setConsta)o +(ntP)o(oo)o(l\()o(cp)o(.g)o(etF)o(in)o(al)o(Co)o(ns)o(tan)o(tP)o(oo)o +(l\()o(\)\))o(;)327 1988 y(clazz.dump\(claz)o(z.g)o(et)o(Cl)o(as)o(sN)o +(ame)o(\(\))c(+)54 b("_.class"\);)218 2100 y(})g(catch\(Exception)48 +b(e\))54 b({)g(e.printStackTr)o(ac)o(e\(\))o(;)48 b(})109 +2213 y(})109 2439 y(private)j(static)h(final)h(Method)e +(removeNOPs\(Metho)o(dG)o(en)d(mg\))53 b({)218 2552 y(InstructionList) +157 b(il)217 b(=)54 b(mg.getInstructio)o(nL)o(is)o(t\()o(\);)218 +2665 y(FindPattern)377 b(f)272 b(=)54 b(new)g(FindPattern\(il)o(\);)218 +2778 y(String)652 b(pat)162 b(=)54 b("\(`NOP'\)+";)c(//)k(Find)e(at)i +(least)e(one)h(NOP)218 2891 y(InstructionHand)o(le)48 +b(next)107 b(=)54 b(null;)218 3004 y(int)817 b(count)52 +b(=)i(0;)218 3230 y(for\(Instruction)o(Ha)o(ndl)o(e)48 +b(ih)54 b(=)g(f.search\(pat\);)48 b(//)54 b(Search)e(with)g(regular)g +(expression)436 3342 y(ih)i(!=)g(null;)436 3455 y(ih)g(=)g +(f.search\(pat,)49 b(next\)\))j({)327 3681 y(InstructionHand)o(le[)o(]) +c(match)k(=)j(f.getMatch\(\);)327 3794 y(InstructionHand)o(le)157 +b(first)52 b(=)j(match[0];)327 3907 y(InstructionHand)o(le)157 +b(last)107 b(=)55 b(match[match.le)o(ng)o(th)48 b(-)54 +b(1];)327 4133 y(/*)g(Some)f(nasty)f(Java)h(compilers)d(may)j(add)g +(NOP)h(at)f(end)g(of)h(method.)382 4246 y(*/)327 4359 +y(if\(\(next)d(=)j(last.getNext\(\)\))48 b(==)54 b(null\))436 +4472 y(break;)327 4697 y(count)f(+=)g(match.length;)327 +4923 y(/*)h(Delete)e(NOPs)g(and)i(redirect)d(any)i(references)d(to)j +(them)g(to)h(the)f(following)382 5036 y(*)h(\(non-nop\))c(instruction.) +382 5149 y(*/)327 5262 y(try)j({)436 5375 y(il.delete\(first,)48 +b(last\);)p eop +%%Page: 29 29 +29 28 bop 327 407 a Ff(})54 b(catch\(TargetLost)o(Ex)o(ce)o(pt)o(io)o +(n)49 b(e\))k({)436 520 y(InstructionHandl)o(e[)o(])48 +b(targets)k(=)i(e.getTargets\(\))o(;)436 633 y(for\(int)e(i=0;)g(i)j(<) +f(targets.length)o(;)48 b(i++\))53 b({)545 746 y(InstructionTarge)o(te) +o(r[)o(])48 b(targeters)j(=)j(targets[i].getT)o(ar)o(ge)o(te)o(rs\()o +(\);)545 971 y(for\(int)e(j=0;)h(j)h(<)g(targeters.leng)o(th)o(;)49 +b(j++\))655 1084 y(targeters[j].u)o(pd)o(at)o(eT)o(arg)o(et)o(\(t)o(ar) +o(ge)o(ts[)o(i])o(,)f(next\);)436 1197 y(})327 1310 y(})218 +1423 y(})218 1649 y(Method)k(m)i(=)g(null;)218 1875 y(if\(count)d(>)j +(0\))g({)327 1988 y(System.out.prin)o(tln)o(\(")o(Re)o(mo)o(ve)o(d)49 +b(")54 b(+)g(count)e(+)i(")g(NOP)f(instructions)c(from)k(method)f(")i +(+)1364 2100 y(mg.getName\(\)\);)327 2213 y(m)g(=)109 +b(mg.getMethod\(\);)218 2326 y(})218 2552 y(il.dispose\(\);)49 +b(//)k(Reuse)g(instruction)c(handles)218 2665 y(return)j(m;)109 +2778 y(})0 2891 y(})p eop +%%Page: 30 30 +30 29 bop 828 5113 a @beginspecial 13 @llx 12 @lly 383 +@urx 830 @ury 2602 @rwi @setspecial +%%BeginDocument: eps/constantpool.eps +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:45:21 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 383 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1677.488 -356.303 translate +90 rotate +2.035 2.035 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 1409 506 185 84 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 1594 505 M 1408 505 I 1408 590 I 1594 590 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S18 F0 [24.66 0 0 -24.66 0 0 ] mFS +F0S18 Ji +1433 537 M (ConstantCP)[18 14 14 13 7 14 14 7 18 0]xS +0.602 0 0.199 1 scol N 1594 551 M 1408 551 I 1408 590 I 1594 590 I C +K +N 1594 565 M 1408 565 I 1408 590 I 1594 590 I C +K +: N 1292 714 375 85 rp C +1 1 0.801 1 scol L ; N 1667 713 M 1291 713 I 1291 799 I 1667 799 I C +K +0 0 0 1 scol 1324 745 M (ConstantInterfaceMethodref)[18 14 14 13 7 14 14 7 6 14 7 14 8 7 14 13 14 21 14 7 14 14 14 8 14 0]xS +0.602 0 0.199 1 scol N 1667 759 M 1291 759 I 1291 799 I 1667 799 I C +K +N 1667 773 M 1291 773 I 1291 799 I 1667 799 I C +K +: N 1710 714 262 85 rp C +1 1 0.801 1 scol L ; N 1972 713 M 1709 713 I 1709 799 I 1972 799 I C +K +0 0 0 1 scol 1734 745 M (ConstantMethodref)[18 14 14 13 7 14 14 7 21 14 7 14 14 14 8 14 0]xS +0.602 0 0.199 1 scol N 1972 759 M 1709 759 I 1709 799 I 1972 799 I C +K +N 1972 773 M 1709 773 I 1709 799 I 1972 799 I C +K +: N 1011 714 235 85 rp C +1 1 0.801 1 scol L ; N 1246 713 M 1010 713 I 1010 799 I 1246 799 I C +K +0 0 0 1 scol 1036 745 M (ConstantFieldref)[18 14 14 13 7 14 14 7 15 6 14 6 14 8 14 0]xS +0.602 0 0.199 1 scol N 1246 759 M 1010 759 I 1010 799 I 1246 799 I C +K +N 1246 773 M 1010 773 I 1010 799 I 1246 799 I C +K +: N 1516 58 213 125 rp C +1 1 0.801 1 scol L ; N 1729 57 M 1515 57 I 1515 183 I 1729 183 I C +K +0 0 0 1 scol 1546 89 M (ConstantPool)[18 14 14 13 7 14 14 7 17 14 14 0]xS +0.602 0 0.199 1 scol N 1729 103 M 1515 103 I 1515 183 I 1729 183 I C +K +N 1729 116 M 1515 116 I 1515 183 I 1729 183 I C +K +0 0 0 1 scol 1555 158 M (getConstant\(\))[14 14 7 18 14 14 13 7 14 14 7 8 0]xS +: N 1550 265 144 84 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1694 264 M 1549 264 I 1549 349 I 1694 349 I C +K +0 0 0 1 scol 1571 296 M (Constant)[18 14 14 13 7 14 14 0]xS +0.602 0 0.199 1 scol N 1694 310 M 1549 310 I 1549 349 I 1694 349 I C +K +N 1694 323 M 1549 323 I 1549 349 I 1694 349 I C +K +N 1622 223 M 1622 184 I K +N 1652 175 14 29 rp C +1 1 1 1 scol L 0 0 0 1 scol 1652 198 M (1)S +0.602 0 0.199 1 scol N 1622 184 M 1632 203 I 1622 221 I 1612 203 I 1622 184 I C +: 1 1 1 1 scol O ; K +N 1622 223 M 1622 263 I K +N 1654 245 11 28 rp C +1 1 1 1 scol L 0 0 0 1 scol 1654 268 M (*)S +N 1652 175 14 29 rp C +1 1 1 1 scol L 0 0 0 1 scol 1652 198 M (1)S +N 1654 245 11 28 rp C +1 1 1 1 scol L 0 0 0 1 scol 1654 268 M (*)S +0.602 0 0.199 1 scol N 1494 655 M 1494 591 I K +N 1123 655 M 1828 655 I K +N 1494 591 M 1509 632 I 1479 632 I C +: 1 1 1 1 scol O ; K +N 1123 713 M 1123 655 I K +: N 1743 506 219 84 rp C +1 1 0.801 1 scol L ; N 1962 505 M 1742 505 I 1742 590 I 1962 590 I C +K +0 0 0 1 scol 1769 537 M (ConstantString)[18 14 14 13 7 14 14 7 17 7 8 6 14 0]xS +0.602 0 0.199 1 scol N 1962 551 M 1742 551 I 1742 590 I 1962 590 I C +K +N 1962 565 M 1742 565 I 1742 590 I 1962 590 I C +K +: N 822 506 219 84 rp C +1 1 0.801 1 scol L ; N 1041 505 M 821 505 I 821 590 I 1041 590 I C +K +0 0 0 1 scol 849 537 M (ConstantClass)[18 14 14 13 7 14 14 7 18 6 14 13 0]xS +0.602 0 0.199 1 scol N 1041 551 M 821 551 I 821 590 I 1041 590 I C +K +N 1041 565 M 821 565 I 821 590 I 1041 590 I C +K +: N 1236 254 224 84 rp C +1 1 0.801 1 scol L ; N 1460 253 M 1235 253 I 1235 338 I 1460 338 I C +K +0 0 0 1 scol 1259 285 M (ConstantInteger)[18 14 14 13 7 14 14 7 6 14 7 14 14 14 0]xS +0.602 0 0.199 1 scol N 1460 299 M 1235 299 I 1235 338 I 1460 338 I C +K +N 1460 312 M 1235 312 I 1235 338 I 1460 338 I C +K +: N 958 254 232 84 rp C +1 1 0.801 1 scol L ; N 1190 253 M 957 253 I 957 338 I 1190 338 I C +K +0 0 0 1 scol 984 285 M (ConstantDouble)[18 14 14 13 7 14 14 7 18 14 14 14 6 0]xS +0.602 0 0.199 1 scol N 1190 299 M 957 299 I 957 338 I 1190 338 I C +K +N 1190 312 M 957 312 I 957 338 I 1190 338 I C +K +: N 1102 506 207 84 rp C +1 1 0.801 1 scol L ; N 1309 505 M 1101 505 I 1101 590 I 1309 590 I C +K +0 0 0 1 scol 1127 537 M (ConstantFloat)[18 14 14 13 7 14 14 7 15 6 14 14 0]xS +0.602 0 0.199 1 scol N 1309 551 M 1101 551 I 1101 590 I 1309 590 I C +K +N 1309 565 M 1101 565 I 1101 590 I 1309 590 I C +K +: N 708 254 206 84 rp C +1 1 0.801 1 scol L ; N 914 253 M 707 253 I 707 338 I 914 338 I C +K +0 0 0 1 scol 732 285 M (ConstantLong)[18 14 14 13 7 14 14 7 14 14 14 0]xS +0.602 0 0.199 1 scol N 914 299 M 707 299 I 707 338 I 914 338 I C +K +N 914 312 M 707 312 I 707 338 I 914 338 I C +K +: N 2025 506 246 84 rp C +1 1 0.801 1 scol L ; N 2271 505 M 2024 505 I 2024 590 I 2271 590 I C +K +0 0 0 1 scol 2051 537 M (ConstantUnicode)[18 14 14 13 7 14 14 7 18 14 6 13 14 14 0]xS +0.602 0 0.199 1 scol N 2271 545 M 2024 545 I 2024 590 I 2271 590 I C +K +N 2271 558 M 2024 558 I 2024 590 I 2271 590 I C +K +: N 1790 254 322 84 rp C +1 1 0.801 1 scol L ; N 2112 253 M 1789 253 I 1789 338 I 2112 338 I C +K +0 0 0 1 scol 1817 285 M (ConstantNameAndType)[18 14 14 13 7 14 14 7 18 14 22 14 17 14 14 14 12 14 0]xS +0.602 0 0.199 1 scol N 2112 299 M 1789 299 I 1789 338 I 2112 338 I C +K +N 2112 312 M 1789 312 I 1789 338 I 2112 338 I C +K +: N 2172 254 194 84 rp C +1 1 0.801 1 scol L ; N 2366 253 M 2171 253 I 2171 338 I 2366 338 I C +K +0 0 0 1 scol 2195 285 M (ConstantUtf8)[18 14 14 13 7 14 14 7 18 7 7 0]xS +0.602 0 0.199 1 scol N 2366 293 M 2171 293 I 2171 338 I 2366 338 I C +K +N 2366 306 M 2171 306 I 2171 338 I 2366 338 I C +K +N 1626 428 M 1626 350 I K +N 809 428 M 2269 428 I K +N 1626 350 M 1641 391 I 1611 391 I C +: 1 1 1 1 scol O ; K +N 933 505 M 933 428 I K +N 1848 505 M 1848 428 I K +N 1068 339 M 1068 428 I K +N 2146 505 M 2146 428 I K +N 809 339 M 809 428 I K +N 2269 339 M 2269 428 I K +N 1500 505 M 1500 428 I K +N 1336 339 M 1336 428 I K +N 1201 505 M 1201 428 I K +N 1926 339 M 1926 428 I K +N 1468 713 M 1468 655 I K +N 1828 713 M 1828 655 I K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore + +%%EndDocument + @endspecial 824 5316 a Fq(Figur)n(e)26 b(8:)k(UML)25 +b(diagram)g(for)h(the)f(ConstantPool)i(API)p eop +%%Page: 31 31 +31 30 bop 749 5113 a @beginspecial 13 @llx 12 @lly 410 +@urx 830 @ury 2792 @rwi @setspecial +%%BeginDocument: eps/instructions.eps +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: Rose Diagram(s) +%%Creator: AdobePS5.dll Version 5.0 +%%CreationDate: 7/7/1999 17:43:39 +%%Pages: 1 +%%Orientation: Portrait +%%PageOrder: Ascend +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%DocumentData: Clean7Bit +%%TargetDevice: (HP LaserJet 5Si) (2014.108) 1 +%%LanguageLevel: 2 +%%BoundingBox: 13 12 410 830 +%%EndComments +%%BeginProcSet: epsffit 1 0 +gsave +1409.418 -167.686 translate +90 rotate +1.711 1.711 scale +%%EndProcSet + + +%%BeginDefaults +%%PageBoundingBox: 13 12 582 830 +%%EndDefaults + +%%BeginProlog +%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 +/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false +setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype +ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch +def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 +rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def +/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def +typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 +def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp +exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def +/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype +{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} +readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop +(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def +/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) +tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup +xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint +tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck +{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) +tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup +rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} +forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier +/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin +$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 +ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto +(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt +$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} +repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print +(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup +0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop +/setpacking where{pop oldpack setpacking}if}if +%%EndResource +userdict /Pscript_WinNT_Incr 230 dict dup begin put +%%BeginResource: file Pscript_FatalError 5.0 0 +/FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div +cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def +%%EndResource +/VM?{vmstatus exch sub exch pop gt{[ +(This job requires more memory than is available in this printer.)100 500 +(Try one or more of the following, and then print again:)100 485 +(For the output format, choose Optimize For Portability.)115 470 +(In the Device Settings page, make sure the Available PostScript Memory is accurate.) +115 455(Reduce the number of fonts in the document.)115 440 +(Print the document in parts.)115 425 12/Times-Roman showpage +(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def +%%BeginResource: file Pscript_Win_Basic 5.0 0 +/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ +/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- +/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , +d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C +/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M +/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d +/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage +, d/K/stroke , d/W/widthshow , d/R/rotate , d/P/eoclip , d/L2? false +/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d +/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, +d}bd/lw/Lw ld/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx +matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit +/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;} +b/initialize{`{/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U +/Pscript_Win_Data 230 dict @ ` put/ADO_mxRot ~ d/TextInitialised? F d +reinitialize}?}b/terminate{!{& self eq{exit}{E}?}loop E}b/suspend/terminate , d +/resume{` Pscript_Win_Data `}b/snap{transform 0.25 sub round 0.25 add ~ 0.25 +sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform} +b<04>cvn{}d/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b +/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b +/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El !} +b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b +%%EndResource +%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 +/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge +{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ +snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F +setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d +/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b +%%EndResource +end +%%EndProlog + +%%BeginSetup +[ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec +1 setlinecap 1 setlinejoin +/mysetup [ 0.24 0 0 -0.24 13.43905 829.74047 ] def +%%EndSetup + +%%Page: 1 1 +%%PageBoundingBox: 13 12 582 830 +%%EndPageComments +%%BeginPageSetup +/DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh +%%EndPageSetup + +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Win_GdiObject 5.0 0 +/SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore +{SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d +/GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps +L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType +1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d +/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal +{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep +gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b +/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M +MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep +M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 ++}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d +/xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix +GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 +/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal +makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 +/HS_DiagCross makehatch}b/GDIBWPatternDict 25 dict @ `/PatternType 1 d +/PaintType L2?{1}{2}? d/RepsV L2?{1}{6}? d/RepsH L2?{1}{5}? d/BBox[0 0 RepsH 1] +d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d/Width 8 d/mx[Width 0 +0 Height neg 0 Height]d/FGnd null d/BGnd null d/SetBGndFGnd L2?{{FGnd null ne +{FGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if BGnd null ne{BGnd +aload ! scol}if}}{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx +PaintData imagemask Width 0 +}repeat E}b E d/GDIBWPatternMx null d/pfprep{save +8 1 $/PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/yExt ~ d/Width ~ d/FGnd ~ d/BGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 +Height 0 0]d E : GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx +matrix currentmatrix d ; CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict @ ` +xOrg yOrg E matrix + mp CTMrestore ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill +{O}{L}? restore}b/GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot +concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap +YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 +-0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix +currentmatrix readonly d ; ;}if}b +%%EndResource +%%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 +/mp/makepattern , d/hbf{setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O} +{L}? ;}b/pbf{: !/fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d +/OutputBPP ~ d/Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 +d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d +20 dict @ `/ImageType 1 d/Width Width d/Height Height d/ImageMatrix mx d +/BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ +/Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict +~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} +? ;}b +%%EndResource +end reinitialize +: N 1432 65 209 154 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol 1 Lw N 1641 64 M 1431 64 I 1431 219 I 1641 219 I C +K +0 0 0 1 scol Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Text 5.0 0 +/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d +/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ +length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets +{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& +/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} +if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ +{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get +StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ +{T pd_AddEm87 ~ !}{! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ +length array copy put pd_CoverFCRange}if}{!}?}? 2 ^ ~ definefont fM 5 4 -1 $ +put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M +currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d +/ySP null d/sW null d/sSU{N/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N +/sW ~ d/ySP ~ d/xSP ~ d}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix +astore concat 0 0 M}b/eR/; , d/AddOrigFP{{&/FontInfo known{&/FontInfo get +length 6 add}{6}? dict `/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d +/OrigFontStyle ~ d/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS +{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 +copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for +& E/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}bind d/mF42{15 dict ` @ +4 1 $/FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 +add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for +/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 +Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName +length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length +string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ +putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 +$ put}for & @ E/FontName get ~ definefont ! ! ! mF}b/UmF{L2? +{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName +get undefinefont}forall undefinefont}b +%%EndResource +end reinitialize +Pscript_WinNT_Incr begin +%%BeginResource: file Pscript_Encoding256 5.0 0 +/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction +/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/exclam/quotedbl/numbersign +/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma +/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S +/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave +/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright +/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef +/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet +/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef +/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered +/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph +/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter +/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis +/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put +%%EndResource +end reinitialize + +%%IncludeResource: font Helvetica +F /F0 0 /256 T /Helvetica mF +/F0S21 F0 [33.09 0 0 -33.09 0 0 ] mFS +F0S21 Ji +1461 104 M (Instruction)[9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1641 117 M 1431 117 I 1431 219 I 1641 219 I C +K +N 1641 212 M 1431 212 I 1431 219 I 1641 219 I C +K +0 0 0 1 scol 1478 153 M (tag)[9 17 0]xS +1478 191 M (length)[7 17 18 18 9 0]xS +: N 575 326 321 98 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 896 325 M 574 325 I 574 424 I 896 424 I C +K +0 0 0 1 scol 609 365 M (BranchInstruction)[22 11 17 18 17 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 896 378 M 574 378 I 574 424 I 896 424 I C +K +N 896 396 M 574 396 I 574 424 I 896 424 I C +K +: N 822 556 164 154 rp C +1 1 0.801 1 scol L ; N 986 555 M 821 555 I 821 710 I 986 710 I C +K +0 0 0 1 scol 859 595 M (Select)[22 17 7 17 17 0]xS +0.602 0 0.199 1 scol N 986 608 M 821 608 I 821 710 I 986 710 I C +K +N 986 702 M 821 702 I 821 710 I 986 710 I C +K +0 0 0 1 scol 868 644 M (targets)[9 17 11 18 17 9 0]xS +868 682 M (keys)[16 17 15 0]xS +: N 584 815 303 100 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 887 814 M 583 814 I 583 915 I 887 915 I C +K +0 0 0 1 scol 599 855 M (LOOKUPSWITCH)[18 26 26 22 24 22 22 34 9 21 24 0]xS +0.602 0 0.199 1 scol N 887 868 M 583 868 I 583 915 I 887 915 I C +K +N 887 886 M 583 886 I 583 915 I 887 915 I C +K +: N 964 815 267 100 rp C +1 1 0.801 1 scol L ; N 1231 814 M 963 814 I 963 915 I 1231 915 I C +K +0 0 0 1 scol 978 855 M (TABLESWITCH)[21 22 22 18 22 22 34 9 21 24 0]xS +0.602 0 0.199 1 scol N 1231 868 M 963 868 I 963 915 I 1231 915 I C +K +N 1231 886 M 963 886 I 963 915 I 1231 915 I C +K +: N 567 557 208 100 rp C +1 1 0.801 1 scol L ; N 775 556 M 566 556 I 566 657 I 775 657 I C +K +0 0 0 1 scol 587 597 M (IfInstruction)[9 10 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 775 609 M 566 609 I 566 657 I 775 657 I C +K +N 775 628 M 566 628 I 566 657 I 775 657 I C +K +: N 393 557 143 100 rp C +1 1 0.801 1 scol L ; N 536 556 M 392 556 I 392 657 I 536 657 I C +K +0 0 0 1 scol 415 597 M (GOTO)[26 26 21 0]xS +0.602 0 0.199 1 scol N 536 609 M 392 609 I 392 657 I 536 657 I C +K +N 536 628 M 392 628 I 392 657 I 536 657 I C +K +N 730 499 M 730 425 I K +N 469 499 M 910 499 I K +N 730 425 M 748 473 I 712 473 I C +: 1 1 1 1 scol O ; K +N 469 556 M 469 499 I K +: N 1843 118 290 100 rp C +1 1 0.801 1 scol L ; N 2133 117 M 1842 117 I 1842 218 I 2133 218 I C +K +0 0 0 1 scol 1865 158 M (ReturnInstruction)[24 17 9 18 11 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2133 168 M 1842 168 I 1842 218 I 2133 218 I C +K +N 2133 186 M 1842 186 I 1842 218 I 2133 218 I C +K +: N 1004 325 264 99 rp C +1 1 0.801 1 scol L ; N 1268 324 M 1003 324 I 1003 424 I 1268 424 I C +K +0 0 0 1 scol 1023 364 M (ArrayInstruction)[22 11 11 17 15 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1268 377 M 1003 377 I 1003 424 I 1268 424 I C +K +N 1268 396 M 1003 396 I 1003 424 I 1268 424 I C +K +: N 1704 332 232 188 rp C +1 1 0.801 1 scol L ; N 1936 331 M 1703 331 I 1703 520 I 1936 520 I C +K +0 0 0 1 scol 1722 372 M (CPInstruction)[24 22 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1936 382 M 1703 382 I 1703 520 I 1936 520 I C +K +N 1936 438 M 1703 438 I 1703 520 I 1936 520 I C +K +0 0 0 1 scol 1751 418 M (index)[7 18 18 17 0]xS +1751 494 M (getType\(\))[18 17 9 21 15 18 17 11 0]xS +: N 1038 118 274 100 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1312 117 M 1037 117 I 1037 218 I 1312 218 I C +K +0 0 0 1 scol 1059 158 M (StackInstruction)[22 9 17 17 16 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1312 170 M 1037 170 I 1037 218 I 1312 218 I C +K +N 1312 189 M 1037 189 I 1037 218 I 1312 218 I C +K +: N 1312 325 345 99 rp C +1 1 0.801 1 scol L ; N 1657 324 M 1311 324 I 1311 424 I 1657 424 I C +K +0 0 0 1 scol 1329 364 M (ConversionInstruction)[24 17 18 15 17 11 17 7 17 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1657 377 M 1311 377 I 1311 424 I 1657 424 I C +K +N 1657 396 M 1311 396 I 1311 424 I 1657 424 I C +K +N 675 556 M 675 499 I K +: N 619 118 337 100 rp C +1 1 0.801 1 scol L ; N 956 117 M 618 117 I 618 218 I 956 218 I C +K +0 0 0 1 scol 641 158 M (ArithmeticInstruction)[22 11 7 9 18 27 17 9 7 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 956 170 M 618 170 I 618 218 I 956 218 I C +K +N 956 189 M 618 189 I 618 218 I 956 218 I C +K +: N 1974 326 390 148 rp C +1 1 0.801 1 scol L ; N 2364 325 M 1973 325 I 1973 474 I 2364 474 I C +K +0 0 0 1 scol 1998 366 M (LocalVariableInstruction)[18 17 17 17 7 22 17 11 7 17 18 7 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2364 376 M 1973 376 I 1973 474 I 2364 474 I C +K +N 2364 433 M 1973 433 I 1973 474 I 2364 474 I C +K +0 0 0 1 scol 2020 412 M (index)[7 18 18 17 0]xS +: N 1392 869 263 148 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 1655 868 M 1391 868 I 1391 1017 I 1655 1017 I C +K +0 0 0 1 scol 1414 908 M (FieldInstruction)[20 7 17 7 18 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 1655 921 M 1391 921 I 1391 1017 I 1655 1017 I C +K +N 1655 940 M 1391 940 I 1391 1017 I 1655 1017 I C +K +0 0 0 1 scol 1439 995 M (getFieldType\(\))[18 17 9 20 7 17 7 18 21 15 18 17 11 0]xS +: N 1735 869 351 148 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2086 868 M 1734 868 I 1734 1017 I 2086 1017 I C +K +0 0 0 1 scol 1790 908 M (InvokeInstruction)[9 18 15 17 16 17 9 18 17 9 11 18 17 9 7 17 0]xS +0.602 0 0.199 1 scol N 2086 919 M 1734 919 I 1734 1017 I 2086 1017 I C +K +N 2086 937 M 1734 937 I 1734 1017 I 2086 1017 I C +K +0 0 0 1 scol 1781 992 M (getArgumentTypes\(\))[18 17 9 22 11 18 18 27 17 18 9 21 15 18 17 17 11 0]xS +0.602 0 0.199 1 scol N 1539 293 M 1539 220 I K +N 703 293 M 2171 293 I K +N 1539 220 M 1557 269 I 1522 269 I C +: 1 1 1 1 scol O ; K +N 2171 325 M 2171 293 I K +N 1826 331 M 1826 293 I K +N 898 784 M 898 711 I K +N 737 784 M 1069 784 I K +N 898 711 M 916 760 I 880 760 I C +: 1 1 1 1 scol O ; K +N 737 814 M 737 784 I K +N 1116 324 M 1116 293 I K +N 792 219 M 792 293 I K +N 1487 324 M 1487 293 I K +N 1984 219 M 1984 293 I K +N 1166 219 M 1166 293 I K +: N 1554 623 248 148 rp C +1 1 0.801 1 scol L ; N 1802 622 M 1553 622 I 1553 771 I 1802 771 I C +K +0 0 0 1 scol 1572 663 M (FieldOrMethod)[20 7 17 7 18 26 11 27 17 9 18 17 0]xS +0.602 0 0.199 1 scol N 1802 676 M 1553 676 I 1553 771 I 1802 771 I C +K +N 1802 694 M 1553 694 I 1553 771 I 1802 771 I C +K +0 0 0 1 scol 1601 749 M (getName\(\))[18 17 9 24 17 27 17 11 0]xS +: N 2179 635 186 99 rp C +1 1 0.801 1 scol L ; 0.602 0 0.199 1 scol N 2365 634 M 2178 634 I 2178 734 I 2365 734 I C +K +0 0 0 1 scol 2232 674 M (NEW)[24 22 0]xS +0.602 0 0.199 1 scol N 2365 684 M 2178 684 I 2178 734 I 2365 734 I C +K +N 2365 703 M 2178 703 I 2178 734 I 2365 734 I C +K +N 703 325 M 703 293 I K +N 1820 594 M 1820 521 I K +N 1657 594 M 2249 594 I K +N 1820 521 M 1838 570 I 1802 570 I C +: 1 1 1 1 scol O ; K +: N 1889 635 250 99 rp C +1 1 0.801 1 scol L ; N 2139 634 M 1888 634 I 1888 734 I 2139 734 I C +K +0 0 0 1 scol 1907 674 M (INSTANCEOF)[9 24 22 21 22 24 24 22 26 0]xS +0.602 0 0.199 1 scol N 2139 684 M 1888 684 I 1888 734 I 2139 734 I C +K +N 2139 703 M 1888 703 I 1888 734 I 2139 734 I C +K +N 2014 634 M 2014 594 I K +N 2249 634 M 2249 594 I K +N 1657 622 M 1657 594 I K +N 1069 814 M 1069 784 I K +N 1677 845 M 1677 772 I K +N 1511 845 M 1907 845 I K +N 1677 772 M 1695 821 I 1660 821 I C +: 1 1 1 1 scol O ; K +N 1907 868 M 1907 845 I K +N 1511 868 M 1511 845 I K +N 910 555 M 910 499 I K +LH +%%PageTrailer + +%%Trailer +%%DocumentNeededResources: +%%+ font Helvetica +%%DocumentSuppliedResources: +Pscript_WinNT_Incr dup /terminate get exec +%%EOF +grestore + +%%EndDocument + @endspecial 880 5316 a Fq(Figur)n(e)26 b(9:)31 b(UML)25 +b(diagram)g(for)g(the)h(Instr)o(uction)g(API)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/docs/manual.tex b/docs/manual.tex new file mode 100644 index 00000000..a79ce572 --- /dev/null +++ b/docs/manual.tex @@ -0,0 +1,1079 @@ +\documentclass[12pt,twoside]{article} + +\usepackage{epsf,a4wide,moreverb,url} +\usepackage{palatino} + +\newcommand\jc{{\sffamily BCEL }} +\newcommand\cp{{constant pool }} +\newcommand\cpe{constant pool} +\newcommand\jvm{{Java Virtual Machine }} +\newcommand\jvme{{Java Virtual Machine}} +\newcommand\vm{{Virtual Machine }} +\newcommand\href[2]{#2} + +\begin{document} + +\title{Byte Code Engineering Library (BCEL)\\ + Description and usage manual\\ + {\small \textbf{Version 1.0}}} + +\author{{\Large Markus Dahm}\\\\ + \href{mailto:markus.dahm@inf.fu-berlin.de}{\texttt{markus.dahm@berlin.de}}} + +\maketitle + +%\tableofcontents + +\begin{abstract} +Extensions and improvements of the programming language Java and its +related execution environment (Java Virtual Machine, JVM) are the +subject of a large number of research projects and proposals. There +are projects, for instance, to add parameterized types to Java, to +implement ``Aspect-Oriented Programming'', to perform sophisticated +static analysis, and to improve the run-time performance. + +Since Java classes are compiled into portable binary class files +(called \emph{byte code}), it is the most convenient and +platform-independent way to implement these improvements not by +writing a new compiler or changing the JVM, but by transforming the +byte code. These transformations can either be performed after +compile-time, or at load-time. Many programmers are doing this by +implementing their own specialized byte code manipulation tools, which +are, however, restricted in the range of their re-usability. + +To deal with the necessary class file transformations, we introduce an +API that helps developers to conveniently implement their +transformations. +\end{abstract} + +\section{Introduction}\label{sec:intro} + +The Java language \cite{gosling} has become very popular and many +research projects deal with further improvements of the language or +its run-time behavior. The possibility to extend a language with new +concepts is surely a desirable feature, but implementation issues +should be hidden from the user. Fortunately, the concepts of the \jvm +permit the user-transparent implementation of such extensions with +relatively little effort. + +Because the target language of Java is an interpreted language with a +small and easy-to-understand set of instructions (the \emph{byte +code}), developers can implement and test their concepts in a very +elegant way. One can write a plug-in replacement for the system's +class loader which is responsible for dynamically loading class files +at run-time and passing the byte code to the \vm (see section +\ref{sec:classloaders}). Class loaders may thus be used to intercept +the loading process and transform classes before they get actually +executed by the JVM \cite{classloader}. While the original class +files always remain unaltered, the behavior of the class loader may be +reconfigured for every execution or instrumented dynamically. + +The \jc API (Byte Code Engineering Library), formerly known as +JavaClass, is a toolkit for the static analysis and dynamic creation +or transformation of Java class files. It enables developers to +implement the desired features on a high level of abstraction without +handling all the internal details of the Java class file format and +thus re-inventing the wheel every time. \jc is written entirely in +Java and freely available under the terms of the Apache Software +License. \footnote{The distribution is available at + \url{http://jakarta.apache.org/bcel/}, including several code + examples and javadoc manuals. } + +This paper is structured as follows: We give a brief description of +the \jvm and the class file format in section \ref{sec:jvm}. Section +\ref{sec:api} introduces the \jc API. Section \ref{sec:application} +describes some typical application areas and example projects. The +appendix contains code examples that are to long to be presented in +the main part of this paper. All examples are included in the +down-loadable distribution. + +\subsection{Related work} + +There are a number of proposals and class libraries that have some +similarities with \textsc{BCEL}: The JOIE \cite{joie} toolkit can +be used to instrument class loaders with dynamic behavior. Similarly, +``Binary Component Adaptation'' \cite{bca} allows components to be +adapted and evolved on-the-fly. Han Lee's ``Byte-code Instrumenting +Tool'' \cite{bit} allows the user to insert calls to analysis methods +anywhere in the byte code. The Jasmin language \cite{jasmin} can be +used to hand-write or generate pseudo-assembler code. D-Java +\cite{classfile} and JCF \cite{inside} are class viewing tools. + +In contrast to these projects, \jc is intended to be a general purpose +tool for ``byte code engineering''. It gives full control to the +developer on a high level of abstraction and is not restricted to any +particular application area. + +\section{The Java Virtual Machine}\label{sec:jvm} + +Readers already familiar with the \jvm and the Java class file format +may want to skip this section and proceed with section \ref{sec:api}. + +Programs written in the Java language are compiled into a portable +binary format called \emph{byte code}. Every class is represented by +a single class file containing class related data and byte code +instructions. These files are loaded dynamically into an interpreter +(\jvme, JVM) and executed. + +Figure \ref{fig:jvm} illustrates the procedure of compiling and +executing a Java class: The source file (\texttt{HelloWorld.java}) is +compiled into a Java class file (\texttt{HelloWorld.class}), loaded by +the byte code interpreter and executed. In order to implement +additional features, researchers may want to transform class files +(drawn with bold lines) before they get actually executed. This +application area is one of the main issues of this article. + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfxsize\textwidth + \epsfbox{eps/jvm.eps} + \caption{Compilation and execution of Java classes} + \label{fig:jvm} + \end{center} +\end{figure} + +Note that the use of the general term ``Java'' implies two meanings: +on the one hand, Java as a programming language is meant, on the other +hand, the Java Virtual Machine, which is not necessarily targeted by +the Java language exclusively, but may be used by other languages as +well (e.g. Eiffel \cite{eiffel}, or Ada \cite{ada}). We assume the +reader to be familiar with the Java language and to have a general +understanding of the Virtual Machine. + +\subsection{Java class file format}\label{sec:format} + +Giving a full overview of the design issues of the Java class file +format and the associated byte code instructions is beyond the scope +of this paper. We will just give a brief introduction covering the +details that are necessary for understanding the rest of this +paper. The format of class files and the byte code instruction set are +described in more detail in the ``\jvm Specification'' \cite{jvm} +\footnote{Also available online at +\url{http://www.javasoft.com/docs/books/vmspec/index.html}}, and in +\cite{jasmin}. Especially, we will not deal with the security +constraints that the \jvm has to check at run-time, i.e. the byte code +verifier. + +Figure \ref{fig:classfile} shows a simplified example of the contents +of a Java class file: It starts with a header containing a ``magic +number'' (\texttt{0xCAFEBABE}) and the version number, followed by the +\emph{\cpe}, which can be roughly thought of as the text segment of an +executable, the \emph{access rights} of the class encoded by a bit +mask, a list of interfaces implemented by the class, lists containing +the fields and methods of the class, and finally the \emph{class +attributes}, e.g. the \texttt{SourceFile} attribute telling the name +of the source file. Attributes are a way of putting additional, +e.g. user-defined, information into class file data structures. For +example, a custom class loader may evaluate such attribute data in +order to perform its transformations. The JVM specification declares +that unknown, i.e. user-defined attributes must be ignored by any \vm +implementation. + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfxsize\textwidth + \epsfbox{eps/classfile.eps} + \caption{Java class file format} + \label{fig:classfile} + \end{center} +\end{figure} + +Because all of the information needed to dynamically resolve the +symbolic references to classes, fields and methods at run-time is +coded with string constants, the \cp contains in fact the largest +portion of an average class file, approximately 60\% \cite{statistic}. +The byte code instructions themselves just make up 12\%. + +The right upper box shows a ``zoomed'' excerpt of the \cpe, while the +rounded box below depicts some instructions that are contained within +a method of the example class. These instructions represent the +straightforward translation of the well-known statement: + +\begin{verbatim} + System.out.println("Hello, world"); +\end{verbatim} + +The first instruction loads the contents of the field \texttt{out} of +class \texttt{java.lang.System} onto the operand stack. This is an +instance of the class \texttt{java.io.PrintStream}. The \texttt{ldc} +(``Load constant'') pushes a reference to the string "Hello world" on +the stack. The next instruction invokes the instance method +\texttt{println} which takes both values as parameters (Instance +methods always implicitly take an instance reference as their first +argument). + +Instructions, other data structures within the class file and +constants themselves may refer to constants in the \cpe. Such +references are implemented via fixed indexes encoded directly into the +instructions. This is illustrated for some items of the figure +emphasized with a surrounding box. + +For example, the \texttt{invokevirtual} instruction refers to a +\texttt{MethodRef} constant that contains information about the name +of the called method, the signature (i.e. the encoded argument and +return types), and to which class the method belongs. In fact, as +emphasized by the boxed value, the \texttt{MethodRef} constant itself +just refers to other entries holding the real data, e.g. it refers to +a \texttt{ConstantClass} entry containing a symbolic reference to the +class \texttt{java.io.PrintStream}. To keep the class file compact, +such constants are typically shared by different instructions. +Similarly, a field is represented by a \texttt{Fieldref} constant that +includes information about the name, the type and the containing class +of the field. + +The \cp basically holds the following types of constants: References +to methods, fields and classes, strings, integers, floats, longs, and +doubles. + +\subsection{Byte code instruction set}\label{sec:code} + +The JVM is a stack-oriented interpreter that creates a local stack +frame of fixed size for every method invocation. The size of the local +stack has to be computed by the compiler. Values may also be stored +intermediately in a frame area containing \emph{local variables} which +can be used like a set of registers. These local variables are +numbered from 0 to 65535, i.e. you have a maximum of 65536 of local +variables. The stack frames of caller and callee method are +overlapping, i.e. the caller pushes arguments onto the operand stack +and the called method receives them in local variables. + +The byte code instruction set currently consists of 212 instructions, +44 opcodes are marked as reserved and may be used for future +extensions or intermediate optimizations within the Virtual +Machine. The instruction set can be roughly grouped as follows: + +\begin{description} +\item[Stack operations:] Constants can be pushed onto the stack either +by loading them from the \cp with the \texttt{ldc} instruction or with +special ``short-cut'' instructions where the operand is encoded into +the instructions, e.g. \texttt{iconst\_0} or \texttt{bipush} (push +byte value). + +\item[Arithmetic operations:] The instruction set of the \jvm +distinguishes its operand types using different instructions to +operate on values of specific type. Arithmetic operations starting +with \texttt{i}, for example, denote an integer operation. E.g., +\texttt{iadd} that adds two integers and pushes the result back on the +stack. The Java types \texttt{boolean}, \texttt{byte}, +\texttt{short}, and \texttt{char} are handled as integers by the JVM. + +\item[Control flow:] There are branch instructions like \texttt{goto} +and \texttt{if\_icmpeq}, which compares two integers for +equality. There is also a \texttt{jsr} (jump sub-routine) and +\texttt{ret} pair of instructions that is used to implement the +\texttt{finally} clause of \texttt{try-catch} blocks. Exceptions may +be thrown with the \texttt{athrow} instruction. + +Branch targets are coded as offsets from the current byte code +position, i.e. with an integer number. + +\item[Load and store operations] for local variables like +\texttt{iload} and \texttt{istore}. There are also array operations +like \texttt{iastore} which stores an integer value into an array. + +\item[Field access:] The value of an instance field may be retrieved +with \texttt{getfield} and written with \texttt{putfield}. For static +fields, there are \texttt{getstatic} and \texttt{putstatic} +counterparts. + +\item[Method invocation:] Methods may either be called via static +references with \texttt{invokesta\-tic} or be bound virtually with the +\texttt{invokevirtual} instruction. Super class methods and private +methods are invoked with \texttt{invokespecial}. + +\item[Object allocation:] Class instances are allocated with the +\texttt{new} instruction, arrays of basic type like \texttt{int[]} +with \texttt{newarray}, arrays of references like \texttt{String[][]} +with \texttt{anewarray} or \texttt{multianewarray}. + +\item[Conversion and type checking:] For stack operands of basic type +there exist casting operations like \texttt{f2i} which converts a +float value into an integer. The validity of a type cast may be +checked with \texttt{checkcast} and the \texttt{instanceof} operator +can be directly mapped to the equally named instruction. +\end{description} + +Most instructions have a fixed length, but there are also some +variable-length instructions: In particular, the \texttt{lookupswitch} +and \texttt{tableswitch} instructions, which are used to implement +\texttt{switch()} statements. Since the number of \texttt{case} +clauses may vary, these instructions contain a variable number of +statements. + +We will not list all byte code instructions here, since these are +explained in detail in the JVM specification. The opcode names are +mostly self-explaining, so understanding the following code examples +should be fairly intuitive. + +\subsection{Method code}\label{sec:code2} + +Non-abstract methods contain an attribute (\texttt{Code}) that holds +the following data: The maximum size of the method's stack frame, the +number of local variables and an array of byte code +instructions. Optionally, it may also contain information about the +names of local variables and source file line numbers that can be used +by a debugger. + +Whenever an exception is thrown, the JVM performs exception handling +by looking into a table of exception handlers. The table marks +handlers, i.e. pieces of code, to be responsible for exceptions of +certain types that are raised within a given area of the byte +code. When there is no appropriate handler the exception is propagated +back to the caller of the method. The handler information is itself +stored in an attribute contained within the \texttt{Code} attribute. + +\subsection{Byte code offsets}\label{sec:offsets} + +Targets of branch instructions like \texttt{goto} are encoded as +relative offsets in the array of byte codes. Exception handlers and +local variables refer to absolute addresses within the byte code. The +former contains references to the start and the end of the +\texttt{try} block, and to the instruction handler code. The latter +marks the range in which a local variable is valid, i.e. its scope. +This makes it difficult to insert or delete code areas on this level +of abstraction, since one has to recompute the offsets every time and +update the referring objects. We will see in section \ref{sec:cgapi} +how \jc remedies this restriction. + +\subsection{Type information}\label{sec:types} + +Java is a type-safe language and the information about the types of +fields, local variables, and methods is stored in +\emph{signatures}. These are strings stored in the \cp and encoded in +a special format. For example the argument and return types of the +\texttt{main} method + +\begin{verbatim} + public static void main(String[] argv) +\end{verbatim} + +are represented by the signature + +\begin{verbatim} + ([java/lang/String;)V +\end{verbatim} + +Classes and arrays are internally represented by strings like +\texttt{"java/lang/String"}, basic types like \texttt{float} by an +integer number. Within signatures they are represented by single +characters, e.g., \texttt{"I"}, for integer. + +\subsection{Code example}\label{sec:fac} + +The following example program prompts for a number and prints the +faculty of it. The \texttt{readLine()} method reading from the +standard input may raise an \texttt{IOException} and if a misspelled +number is passed to \texttt{parseInt()} it throws a +\texttt{NumberFormatException}. Thus, the critical area of code must be +encapsulated in a \texttt{try-catch} block. + +{\small \begin{verbatim} +import java.io.*; +public class Faculty { + private static BufferedReader in = new BufferedReader(new + InputStreamReader(System.in)); + public static final int fac(int n) { + return (n == 0)? 1 : n * fac(n - 1); + } + public static final int readInt() { + int n = 4711; + try { + System.out.print("Please enter a number> "); + n = Integer.parseInt(in.readLine()); + } catch(IOException e1) { System.err.println(e1); } + catch(NumberFormatException e2) { System.err.println(e2); } + return n; + } + public static void main(String[] argv) { + int n = readInt(); + System.out.println("Faculty of " + n + " is " + fac(n)); + }} +\end{verbatim}} + +This code example typically compiles to the following chunks of byte +code: + +\subsubsection{Method fac} + +{\small \begin{verbatim} +0: iload_0 +1: ifne #8 +4: iconst_1 +5: goto #16 +8: iload_0 +9: iload_0 +10: iconst_1 +11: isub +12: invokestatic Faculty.fac (I)I (12) +15: imul +16: ireturn + +LocalVariable(start_pc = 0, length = 16, index = 0:int n) +\end{verbatim}} + +The method \texttt{fac} has only one local variable, the argument +\texttt{n}, stored in slot 0. This variable's scope ranges from the +start of the byte code sequence to the very end. If the value of +\texttt{n} (stored in local variable 0, i.e. the value fetched with +\texttt{iload\_0}) is not equal to 0, the \texttt{ifne} instruction +branches to the byte code at offset 8, otherwise a 1 is pushed onto +the operand stack and the control flow branches to the final return. +For ease of reading, the offsets of the branch instructions, which are +actually relative, are displayed as absolute addresses in these +examples. + +If recursion has to continue, the arguments for the multiplication +(\texttt{n} and \texttt{fac(n - 1)}) are evaluated and the results +pushed onto the operand stack. After the multiplication operation has +been performed the function returns the computed value from the top of +the stack. + +\subsubsection{Method readInt} + +{\small \begin{verbatim} +0: sipush 4711 +3: istore_0 +4: getstatic java.lang.System.out Ljava/io/PrintStream; +7: ldc "Please enter a number> " +9: invokevirtual java.io.PrintStream.print (Ljava/lang/String;)V +12: getstatic Faculty.in Ljava/io/BufferedReader; +15: invokevirtual java.io.BufferedReader.readLine ()Ljava/lang/String; +18: invokestatic java.lang.Integer.parseInt (Ljava/lang/String;)I +21: istore_0 +22: goto #44 +25: astore_1 +26: getstatic java.lang.System.err Ljava/io/PrintStream; +29: aload_1 +30: invokevirtual java.io.PrintStream.println (Ljava/lang/Object;)V +33: goto #44 +36: astore_1 +37: getstatic java.lang.System.err Ljava/io/PrintStream; +40: aload_1 +41: invokevirtual java.io.PrintStream.println (Ljava/lang/Object;)V +44: iload_0 +45: ireturn + +Exception handler(s) = +From To Handler Type +4 22 25 java.io.IOException(6) +4 22 36 NumberFormatException(10) +\end{verbatim}} + +First the local variable \texttt{n} (in slot 0) is initialized to the +value 4711. The next instruction, \texttt{getstatic}, loads the +static \texttt{System.out} field onto the stack. Then a string is +loaded and printed, a number read from the standard input and +assigned to \texttt{n}. + +If one of the called methods (\texttt{readLine()} and +\texttt{parseInt()}) throws an exception, the \jvm calls one of the +declared exception handlers, depending on the type of the exception. +The \texttt{try}-clause itself does not produce any code, it merely +defines the range in which the following handlers are active. In the +example the specified source code area maps to a byte code area +ranging from offset 4 (inclusive) to 22 (exclusive). If no exception +has occurred (``normal'' execution flow) the \texttt{goto} +instructions branch behind the handler code. There the value of +\texttt{n} is loaded and returned. + +For example the handler for \texttt{java.io.IOException} starts at +offset 25. It simply prints the error and branches back to the normal +execution flow, i.e. as if no exception had occurred. + +\section{The BCEL API}\label{sec:api} + +The \jc API abstracts from the concrete circumstances of the \jvm and +how to read and write binary Java class files. The API mainly +consists of three parts: + +\begin{enumerate} + +\item A package that contains classes that describe ``static'' + constraints of class files, i.e., reflect the class file format and + is not intended for byte code modifications. The classes may be + used to read and write class files from or to a file. This is + useful especially for analyzing Java classes without having the + source files at hand. The main data structure is called + \texttt{JavaClass} which contains methods, fields, etc.. + +\item A package to dynamically generate or modify \texttt{JavaClass} +objects. It may be used e.g. to insert analysis code, to strip +unnecessary information from class files, or to implement the code +generator back-end of a Java compiler. + +\item Various code examples and utilities like a class file viewer, a +tool to convert class files into HTML, and a converter from class +files to the Jasmin assembly language \cite{jasmin}. +\end{enumerate} + +\subsection{JavaClass}\label{sec:javaclass} + +The ``static'' component of the \jc API resides in the package +\path{de.fub.bytecode.classfile} and represents class files. All of the +binary components and data structures declared in the JVM +specification \cite{jvm} and described in section \ref{sec:jvm} are +mapped to classes. Figure \ref{fig:umljc} shows an UML diagram of the +hierarchy of classes of the \jc API. Figure \ref{fig:umlcp} in the +appendix also shows a detailed diagram of the \texttt{ConstantPool} +components. + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfysize0.93\textheight + \epsfbox{eps/javaclass.eps} + \caption{UML diagram for the \jc API}\label{fig:umljc} + \end{center} +\end{figure} + +The top-level data structure is \texttt{JavaClass}, which in most +cases is created by a \texttt{Class\-Par\-ser} object that is capable +of parsing binary class files. A \texttt{JavaClass} object basically +consists of fields, methods, symbolic references to the super class +and to the implemented interfaces. + +The \cp serves as some kind of central repository and is thus of +outstanding importance for all components. \texttt{ConstantPool} +objects contain an array of fixed size of \texttt{Constant} entries, +which may be retrieved via the \texttt{getConstant()} method taking an +integer index as argument. Indexes to the \cp may be contained in +instructions as well as in other components of a class file and in \cp +entries themselves. + +Methods and fields contain a signature, symbolically defining their +types. Access flags like \texttt{public static final} occur in +several places and are encoded by an integer bit mask, e.g. +\texttt{public static final} matches to the Java expression + +\begin{verbatim} + int access_flags = ACC_PUBLIC | ACC_STATIC | ACC_FINAL; +\end{verbatim} + +As mentioned in section \ref{sec:format} already, several components +may contain \emph{attribute} objects: classes, fields, methods, and +\texttt{Code} objects (introduced in section \ref{sec:code2}). The +latter is an attribute itself that contains the actual byte code +array, the maximum stack size, the number of local variables, a table +of handled exceptions, and some optional debugging information coded +as \texttt{LineNumberTable} and \texttt{LocalVariableTable} +attributes. Attributes are in general specific to some data structure, +i.e. no two components share the same kind of attribute, though this +is not explicitly forbidden. In the figure the \texttt{Attribute} +classes are marked with the component they belong to. + +\subsection{Class repository} + +Using the provided \texttt{Repository} class, reading class files into +a \texttt{JavaClass} object is quite simple: + +\begin{verbatim} + JavaClass clazz = Repository.lookupClass("java.lang.String"); +\end{verbatim} + +The repository also contains methods providing the dynamic equivalent +of the \texttt{instanceof} operator, and other useful routines: + +\begin{verbatim} + if(Repository.instanceOf(clazz, super_class) { + ... + } +\end{verbatim} + +\subsubsection{Accessing class file data} + +Information within the class file components may be accessed like Java +Beans via intuitive set/get methods. All of them also define a +\texttt{toString()} method so that implementing a simple class viewer +is very easy. In fact all of the examples used here have been produced +this way: + +{\small \begin{verbatim} + System.out.println(clazz); + printCode(clazz.getMethods()); + ... + public static void printCode(Method[] methods) { + for(int i=0; i < methods.length; i++) { + System.out.println(methods[i]); + + Code code = methods[i].getCode(); + if(code != null) // Non-abstract method + System.out.println(code); + } + } +\end{verbatim}} + +\subsubsection{Analyzing class data} + +Last but not least, \jc supports the \emph{Visitor} design +pattern \cite{design}, so one can write visitor objects to traverse +and analyze the contents of a class file. Included in the distribution +is a class \texttt{JasminVisitor} that converts class files into the +Jasmin assembler language \cite{jasmin}. + +\subsection{ClassGen}\label{sec:cgapi} + +This part of the API (package \path{ork.apache.bcel.generic}) supplies +an abstraction level for creating or transforming class files +dynamically. It makes the static constraints of Java class files like +the hard-coded byte code addresses generic. The generic \cpe, for +example, is implemented by the class \texttt{ConstantPoolGen} which +offers methods for adding different types of constants. Accordingly, +\texttt{ClassGen} offers an interface to add methods, fields, and +attributes. Figure \ref{fig:umlcg} gives an overview of this part of +the API. + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfysize0.93\textheight + \epsfbox{eps/classgen.eps} + \caption{UML diagram of the ClassGen API}\label{fig:umlcg} + \end{center} +\end{figure} + +\subsubsection{Types} + +We abstract from the concrete details of the type signature syntax +(see \ref{sec:types}) by introducing the \texttt{Type} class, which is +used, for example, by methods to define their return and argument +types. Concrete sub-classes are \texttt{BasicType}, +\texttt{ObjectType}, and \texttt{ArrayType} which consists of the +element type and the number of dimensions. For commonly used types the +class offers some predefined constants. For example the method +signature of the \texttt{main} method as shown in section +\ref{sec:types} is represented by: + +\begin{verbatim} + Type return_type = Type.VOID; + Type[] arg_types = new Type[] { new ArrayType(Type.STRING, 1) }; +\end{verbatim} + +\texttt{Type} also contains methods to convert types into textual +signatures and vice versa. The sub-classes contain implementations of +the routines and constraints specified by the Java Language +Specification \cite{gosling}. + +\subsubsection{Generic fields and methods} + +Fields are represented by \texttt{FieldGen} objects, which may be +freely modified by the user. If they have the access rights +\texttt{static final}, i.e. are constants and of basic type, they may +optionally have an initializing value. + +Generic methods contain methods to add exceptions the method may +throw, local variables, and exception handlers. The latter two are +represented by user-configurable objects as well. Because exception +handlers and local variables contain references to byte code +addresses, they also take the role of an \emph{instruction targeter} +in our terminology. Instruction targeters contain a method +\texttt{updateTarget()} to redirect a reference. Generic +(non-abstract) methods refer to \emph{instruction lists} that consist +of instruction objects. References to byte code addresses are +implemented by handles to instruction objects. This is explained in +more detail in the following sections. + +The maximum stack size needed by the method and the maximum number of +local variables used may be set manually or computed via the +\texttt{setMaxStack()} and \texttt{setMaxLocals()} methods +automatically. + +\subsubsection{Instructions} + +Modeling instructions as objects may look somewhat odd at first sight, +but in fact enables programmers to obtain a high-level view upon +control flow without handling details like concrete byte code offsets. +Instructions consist of a tag, i.e. an opcode, their length in bytes +and an offset (or index) within the byte code. Since many instructions +are immutable, the \texttt{InstructionConstants} interface offers +shareable predefined ``fly-weight'' constants to use. + +Instructions are grouped via sub-classing, the type hierarchy of +instruction classes is illustrated by (incomplete) figure +\ref{fig:umlinstr} in the appendix. The most important family of +instructions are the \emph{branch instructions}, e.g. \texttt{goto}, +that branch to targets somewhere within the byte code. Obviously, +this makes them candidates for playing an \texttt{InstructionTargeter} +role, too. Instructions are further grouped by the interfaces they +implement, there are, e.g., \texttt{TypedInstruction}s that are +associated with a specific type like \texttt{ldc}, or +\texttt{ExceptionThrower} instructions that may raise exceptions when +executed. + +All instructions can be traversed via \texttt{accept(Visitor v)} methods, +i.e., the Visitor design pattern. There is however some special trick +in these methods that allows to merge the handling of certain +instruction groups. The \texttt{accept()} do not only call the +corresponding \texttt{visit()} method, but call \texttt{visit()} +methods of their respective super classes and implemented interfaces +first, i.e. the most specific \texttt{visit()} call is last. Thus one +can group the handling of, say, all \texttt{BranchInstruction}s into +one single method. + +For debugging purposes it may even make sense to ``invent'' your own +instructions. In a sophisticated code generator like the one used as a +backend of the Barat framework \cite{barat} one often has to insert +temporary \texttt{nop} (No operation) instructions. When examining +the produced code it may be very difficult to track back where the +\texttt{nop} was actually inserted. One could think of a derived +\texttt{nop2} instruction that contains additional debugging +information. When the instruction list is dumped to byte code, the +extra data is simply dropped. + +One could also think of new byte code instructions operating on +complex numbers that are replaced by normal byte code upon load-time +or are recognized by a new JVM. + +\subsubsection{Instruction lists}\label{sec:il} + +An \emph{instruction list} is implemented by a list of +\emph{instruction handles} encapsulating instruction objects. +References to instructions in the list are thus not implemented by +direct pointers to instructions but by pointers to instruction +\emph{handles}. This makes appending, inserting and deleting areas of +code very simple. Since we use symbolic references, computation of +concrete byte code offsets does not need to occur until finalization, +i.e. until the user has finished the process of generating or +transforming code. We will use the term instruction handle and +instruction synonymously throughout the rest of the paper. +Instruction handles may contain additional user-defined data using the +\texttt{addAttribute()} method. + +\paragraph{Appending.} +One can append instructions or other instruction lists anywhere to an +existing list. The instructions are appended after the given +instruction handle. All append methods return a new instruction +handle which may then be used as the target of a branch instruction, +e.g.. + +{\small \begin{verbatim} + InstructionList il = new InstructionList(); + ... + GOTO g = new GOTO(null); + il.append(g); + ... + InstructionHandle ih = il.append(InstructionConstants.ACONST_NULL); + g.setTarget(ih); +\end{verbatim}} + +\paragraph{Inserting.} +Instructions may be inserted anywhere into an existing list. They are +inserted before the given instruction handle. All insert methods +return a new instruction handle which may then be used as the start +address of an exception handler, for example. + +{\small \begin{verbatim} + InstructionHandle start = il.insert(insertion_point, + InstructionConstants.NOP); + ... + mg.addExceptionHandler(start, end, handler, "java.io.IOException"); +\end{verbatim}} + + +\paragraph{Deleting.} +Deletion of instructions is also very straightforward; all instruction +handles and the contained instructions within a given range are +removed from the instruction list and disposed. The \texttt{delete()} +method may however throw a \texttt{TargetLostException} when there are +instruction targeters still referencing one of the deleted +instructions. The user is forced to handle such exceptions in a +\texttt{try-catch} block and redirect these references elsewhere. The +\emph{peep hole} optimizer described in section \ref{sec:nop} gives a +detailed example for this. + +{\small \begin{verbatim} + try { + il.delete(first, last); + } catch(TargetLostException e) { + InstructionHandle[] targets = e.getTargets(); + for(int i=0; i < targets.length; i++) { + InstructionTargeter[] targeters = targets[i].getTargeters(); + for(int j=0; j < targeters.length; j++) + targeters[j].updateTarget(targets[i], new_target); + } + } +\end{verbatim}} + +\paragraph{Finalizing.} +When the instruction list is ready to be dumped to pure byte code, all +symbolic references must be mapped to real byte code offsets. This is +done by the \texttt{getByteCode()} method which is called by default +by \texttt{MethodGen.getMethod()}. Afterwards you should call +\texttt{dispose()} so that the instruction handles can be reused +internally. This helps to reduce memory usage. + +\begin{verbatim} + InstructionList il = new InstructionList(); + + ClassGen cg = new ClassGen("HelloWorld", "java.lang.Object", + "", ACC_PUBLIC | ACC_SUPER, + null); + MethodGen mg = new MethodGen(ACC_STATIC | ACC_PUBLIC, + Type.VOID, new Type[] { + new ArrayType(Type.STRING, 1) + }, new String[] { "argv" }, + "main", "HelloWorld", il, cp); + ... + cg.addMethod(mg.getMethod()); + il.dispose(); // Reuse instruction handles of list +\end{verbatim} + +\subsubsection{Code example revisited} + +Using instruction lists gives us a generic view upon the code: In +Figure \ref{fig:il} we again present the code chunk of the +\texttt{readInt()} method of the faculty example in section +\ref{sec:fac}: The local variables \texttt{n} and \texttt{e1} both +hold two references to instructions, defining their scope. There are +two \texttt{goto}s branching to the \texttt{iload} at the end of the +method. One of the exception handlers is displayed, too: it references +the start and the end of the \texttt{try} block and also the exception +handler code. + +\begin{figure}[htbp] + \begin{center} + \leavevmode + \epsfxsize\textwidth + \epsfbox{eps/il.eps} + \caption{Instruction list for \texttt{readInt()} method} + \label{fig:il} + \end{center} +\end{figure} + +\subsubsection{Instruction factories}\label{sec:compound} + +To simplify the creation of certain instructions the user can use the +supplied \texttt{InstructionFactory} class which offers a lot of +useful methods to create instructions from scratch. Alternatively, he +can also use \emph{compound instructions}: When producing byte code, +some patterns typically occur very frequently, for instance the +compilation of arithmetic or comparison expressions. You certainly do +not want to rewrite the code that translates such expressions into +byte code in every place they may appear. In order to support this, +the \jc API includes a \emph{compound instruction} (an interface with +a single \texttt{getInstructionList()} method). Instances of this +class may be used in any place where normal instructions would occur, +particularly in append operations. + +\paragraph{Example: Pushing constants.} +Pushing constants onto the operand stack may be coded in different +ways. As explained in section \ref{sec:code} there are some +``short-cut'' instructions that can be used to make the produced byte +code more compact. The smallest instruction to push a single +\texttt{1} onto the stack is \texttt{iconst\_1}, other possibilities +are \texttt{bipush} (can be used to push values between -128 and 127), +\texttt{sipush} (between -32768 and 32767), or \texttt{ldc} (load +constant from \cpe). + +Instead of repeatedly selecting the most compact instruction in, say, +a switch, one can use the compound \texttt{PUSH} instruction whenever +pushing a constant number or string. It will produce the appropriate +byte code instruction and insert entries into to \cp if necessary. + +\begin{verbatim} + il.append(new PUSH(cp, "Hello, world")); + il.append(new PUSH(cp, 4711)); +\end{verbatim} + +\subsubsection{Code patterns using regular expressions}\label{sec:peephole} + +When transforming code, for instance during optimization or when +inserting analysis method calls, one typically searches for certain +patterns of code to perform the transformation at. To simplify +handling such situations \jc introduces a special feature: One can +search for given code patterns within an instruction list using +\emph{regular expressions}. In such expressions, instructions are +represented by symbolic names, e.g. "\texttt{`IfInstruction'}". Meta +characters like \verb|+|, \verb|*|, and \verb@(..|..)@ have their +usual meanings. Thus, the expression + +\begin{verbatim} + "`NOP'+(`ILOAD__'|`ALOAD__')*" +\end{verbatim} + +represents a piece of code consisting of at least one \texttt{NOP} +followed by a possibly empty sequence of \texttt{ILOAD} and +\texttt{ALOAD} instructions. + +The \texttt{search()} method of class \texttt{FindPattern} gets an +instruction list and a regular expression as arguments and returns an +array describing the area of matched instructions. Additional +constraints to the matching area of instructions, which can not be +implemented via regular expressions, may be expressed via \emph{code +constraints}. + +\subsubsection{Example: Optimizing boolean expressions.} + +In Java, boolean values are mapped to 1 and to 0, respectively. Thus, +the simplest way to evaluate boolean expressions is to push a 1 or a 0 +onto the operand stack depending on the truth value of the expression. +But this way, the subsequent combination of boolean expressions (with +\verb|&&|, e.g) yields long chunks of code that push lots of 1s and +0s onto the stack. + +When the code has been finalized these chunks can be optimized with a +\emph{peep hole} algorithm: An \texttt{IfInstruction} (e.g. the +comparison of two integers: \texttt{if\_icmpeq}) that either produces +a 1 or a 0 on the stack and is followed by an \texttt{ifne} +instruction (branch if stack value $\neq$ 0) may be replaced by the +\texttt{IfInstruction} with its branch target replaced by the target +of the \texttt{ifne} instruction: + +{\small \verbatimtabinput{bool.java}} + +The applied code constraint object ensures that the matched code +really corresponds to the targeted expression pattern. Subsequent +application of this algorithm removes all unnecessary stack operations +and branch instructions from the byte code. If any of the deleted +instructions is still referenced by an \texttt{InstructionTargeter} +object, the reference has to be updated in the \texttt{catch}-clause. + +Code example \ref{sec:hello} gives a verbose example of how to create +a class file, while example \ref{sec:nop} shows how to implement a +simple peephole optimizer and how to deal with \texttt{TargetLost} +exceptions. + +\paragraph{Example application:} +The expression + +\begin{verbatim} + if((a == null) || (i < 2)) + System.out.println("Ooops"); +\end{verbatim} + +can be mapped to both of the chunks of byte code shown in figure +\ref{fig:code}. The left column represents the unoptimized code while +the right column displays the same code after an aggressively +optimizing peep hole algorithm has been applied: + +\begin{figure}[hpt] +\begin{minipage}{0.49\textwidth} + {\small \verbatimtabinput{unopt}} \vfil +\end{minipage} +\begin{minipage}{0.49\textwidth} + {\small \verbatimtabinput{opt}} \vfil +\end{minipage}\label{fig:code}\caption{Optimizing boolean expressions} +\begin{center} + + +\end{center} +\end{figure} +\section{Application areas}\label{sec:application} + +There are many possible application areas for \jc ranging from class +browsers, profilers, byte code optimizers, and compilers to +sophisticated run-time analysis tools and extensions to the Java +language \cite{agesen, myers}. + +Compilers like the Barat compiler \cite{barat} use \jc to implement a +byte code generating back end. Other possible application areas are +the static analysis of byte code \cite{thies} or examining the +run-time behavior of classes by inserting calls to profiling methods +into the code. Further examples are extending Java with Eiffel-like +assertions \cite{jawa}, automated delegation \cite{classfilters}, or +with the concepts of ``Aspect-Oriented Programming'' \cite{aspect}. + +\subsection{Class loaders}\label{sec:classloaders} + +Class loaders are responsible for loading class files from the file +system or other resources and passing the byte code to the \vm +\cite{classloader}. A custom \texttt{ClassLoader} object may be used +to intercept the standard procedure of loading a class, i.e. the +system class loader, and perform some transformations before actually +passing the byte code to the JVM. + +A possible scenario is described in figure \ref{fig:classloader}: +During run-time the \vm requests a custom class loader to load a given +class. But before the JVM actually sees the byte code, the class +loader makes a ``side-step'' and performs some transformation to the +class. To make sure that the modified byte code is still valid and +does not violate any of the JVM's rules it is checked by the verifier +before the JVM finally executes it. + +\begin{figure}[ht] + \begin{center} + \leavevmode + \epsfxsize\textwidth + \epsfbox{eps/classloader.eps} + \caption{Class loaders}\label{fig:classloader} + \end{center} +\end{figure} + +Using class loaders is an elegant way of extending the \jvm with new +features without actually modifying it. This concept enables +developers to use \emph{load-time reflection} to implement their ideas +as opposed to the static reflection supported by the Java Reflection +API \cite{reflection}. Load-time transformations supply the user with +a new level of abstraction. He is not strictly tied to the static +constraints of the original authors of the classes but may customize +the applications with third-party code in order to benefit from new +features. Such transformations may be executed on demand and neither +interfere with other users, nor alter the original byte code. In fact, +class loaders may even create classes \emph{ad hoc} without loading a +file at all. + +\subsubsection{Example: Poor Man's Genericity} + +The ``Poor Man's Genericity'' project \cite{pmg} that extends Java +with parameterized classes, for example, uses \jc in two places to +generate instances of parameterized classes: During compile-time (the +standard \texttt{javac} with some slightly changed classes) and at +run-time using a custom class loader. The compiler puts some +additional type information into class files which is evaluated at +load-time by the class loader. The class loader performs some +transformations on the loaded class and passes them to the VM. The +following algorithm illustrates how the load method of the class +loader fulfills the request for a parameterized class, +e.g. \verb|Stack| + +\begin{enumerate} +\item Search for class \texttt{Stack}, load it, and check for a +certain class attribute containing additional type information. I.e. +the attribute defines the ``real'' name of the class, +i.e. \verb|Stack|. + +\item Replace all occurrences and references to the formal type +\texttt{A} with references to the actual type \texttt{String}. For +example the method + +\begin{verbatim} + void push(A obj) { ... } +\end{verbatim} + +becomes + +\begin{verbatim} + void push(String obj) { ... } +\end{verbatim} + +\item Return the resulting class to the Virtual Machine. +\end{enumerate} + +\bibliographystyle{alpha}\bibliography{manual} + +\newpage\appendix + +\pagestyle{empty} +\include{appendix} +\include{diagrams} + +\end{document} +% LocalWords: Freie Universit Institut Informatik dahm inf fu berlin de JOIE +% LocalWords: JCF HelloWorld Jasmin Eiffel SourceFile classfile lang io ldc ar +% LocalWords: PrintStream invokevirtual MethodRef ConstantClass Fieldref dup +% LocalWords: iconst bipush iadd cmpeq jsr athrow iload istore iastore er ic +% LocalWords: getfield putfield getstatic putstatic invokestatic newarray nop +% LocalWords: anewarray checkcast instanceof lookupswitch tableswitch Barat VM +% LocalWords: ConstantPool getConstant LineNumberTable LocalvariableTable ifne +% LocalWords: invokesta invokespecial multianewarray ConstantPoolGen MethodGen +% LocalWords: BasicType ObjectType ArrayType InstructionTarge getByteCode bool +% LocalWords: BranchInstruction InstructionTargeter InstructionHandle regex +% LocalWords: TargetLostException codeconstraint CompoundInstruction sipush +% LocalWords: getInstructionList FindPattern CodeConstraint IfInstruction fac +% LocalWords: TargetLost javac readLine IOException parseInt readInt CLASSPATH +% LocalWords: NumberFormatException toString JasminVisitor getSignature JVM's +% LocalWords: FieldGen updateTarget LGPL BCEL LocalVariableTable setMaxStack +% LocalWords: setMaxLocals InstructionConstants TypedInstruction addAttribute +% LocalWords: ExceptionThrower getMethod InstructionFactory ALOAD + diff --git a/docs/opt b/docs/opt new file mode 100644 index 00000000..fd57764f --- /dev/null +++ b/docs/opt @@ -0,0 +1,24 @@ +10: aload_0 +11: ifnull #19 +14: iload_1 +15: iconst_2 +16: if_icmpge #27 +19: getstatic System.out +22: ldc "Ooops" +24: invokevirtual println +27: return + + + + + + + + + + + + + + + diff --git a/docs/unopt b/docs/unopt new file mode 100644 index 00000000..c458bf40 --- /dev/null +++ b/docs/unopt @@ -0,0 +1,24 @@ +5: aload_0 +6: ifnull #13 +9: iconst_0 +10: goto #14 +13: iconst_1 +14: nop +15: ifne #36 +18: iload_1 +19: iconst_2 +20: if_icmplt #27 +23: iconst_0 +24: goto #28 +27: iconst_1 +28: nop +29: ifne #36 +32: iconst_0 +33: goto #37 +36: iconst_1 +37: nop +38: ifeq #52 +41: getstatic System.out +44: ldc "Ooops" +46: invokevirtual println +52: return -- cgit v1.2.3