/* * Software Engineering Tools. * * $Id: Test61.java 15 2008-08-04 22:00:07Z hboutemy $ * * Copyright (c) 1997-2001 Joseph Kiniry * Copyright (c) 2000-2001 KindSoftware, LLC * Copyright (c) 1997-1999 California Institute of Technology * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of the Joseph Kiniry, KindSoftware, nor the * California Institute of Technology, nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KIND SOFTWARE OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package idebughc; import java.util.Hashtable; /** * <p> The core interface to gathering statistics. </p> * * <p> Users of IDebug wishing to keep statistics on their system need to * inherit from this abstract class and implement the protected methods. * The simplest means to collect statistics are to use a hashtable keyed on * statistic (since their hashCode is valid) and store Double objects * corresponding to the current value of that statistic. See * <code>idebughc.SimpleCollect</code> for an example of this * implementation which you can reuse. </p> * * @idea Alternative implementations that have some or all of the following * characteristics are encouraged. Ideas include collectors that: * <ul> * <li> send logging information at certain time intervals or trigger * values. </li> * <li> log statistic trace sets to do data analysis over long time * intervals. </li> * <li> compute means and variances so that accurate characterization of * the data is available. </li> * <li> detect significant changes in system behavior or performance and * can initiate early warning systems or preventive maintenence. </li> * <li> utilize system debugging context to log certain statistics and not * others (using the level and type of <code>Event</code> and the * <code>isValidCategory()</code> and <code>isValidLevel()</code> methods * herein). </li> * </ul> * * @version $Revision: 15 $ $Date: 2008-08-05 00:00:07 +0200 (Di, 05 Aug 2008) $ * @author Joseph R. Kiniry <joe@kindsoftware.com> * @history BON design for Dali by Donnie, Todd, and Joe. Adopted during * design phase of DALi into IDebug. * @see Statistic * @see idebug.SimpleCollect */ public abstract class Collect { // Attributes /** * <p> A <code>Hashtable</code> used to track statistics * definitions. </p> */ private Hashtable statistics; /** * <p> The <code>Debug</code> object associated with this * <code>Collect</code> object. </p> * * @modifies SINGLE-ASSIGNMENT */ private Debug debug; // Inherited Methods // Constructors /** * <p> Construct a new <code>Collect</code> class. </p> */ public Collect() { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "Collect()", true), jassParameters); this.statistics = new Hashtable(); /* postcondition */ if (!((statistics!=null))) throw new jass.runtime.PostconditionException("idebughc.Collect","Collect()",112,"statistics_initialized"); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "Collect()", false), jassParameters); } // Public Methods /** * <p> Checks a debug instance to make sure its <code>collect</code> * attribute references this <code>Collect</code> object. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@6b017e</b>: (d!=null)</code></dd></dl> <dl><dt><b>Ensures:</b></dt><dd><code><b>jass.reflect.AssertionLabel@2effdf</b>: (Result==(d.collect==this))</code></dd></dl> @concurrency CONCURRENT * @modifies QUERY * @param d the debug instance to check. */ public boolean checkDebugCollectRef(Debug d) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(d)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "checkDebugCollectRef(idebughc.Debug)", true), jassParameters); boolean jassResult; /* precondition */ if (!((d!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","checkDebugCollectRef(idebughc.Debug)",128,"d_non_null"); jassResult = ( (d.collect == this)); /* postcondition */ if (!((jassResult==(d.collect==this)))) throw new jass.runtime.PostconditionException("idebughc.Collect","checkDebugCollectRef(idebughc.Debug)",132,"result_correct"); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "checkDebugCollectRef(idebughc.Debug)", false), jassParameters); return jassResult; } /** * <p> Set the debug instance associated with this collect instance. * This method <strong>must</strong> be called with the correct debug * instance prior to using <strong>any</strong> of the methods of this * <code>Collect</code> instance. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@20a47e</b>: (d!=null) &&<br><b>jass.reflect.AssertionLabel@f73c1</b>: checkDebugCollectRef(d)</code></dd></dl> <dl><dt><b>Ensures:</b></dt><dd><code><b>jass.reflect.AssertionLabel@789144</b>: (debug==d)</code></dd></dl> @concurrency CONCURRENT * @modifies debug * @param d the debug object associated with this <code>Collect</code> * object. */ public final void setDebug(Debug d) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(d)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "setDebug(idebughc.Debug)", true), jassParameters); /* precondition */ if (!((d!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","setDebug(idebughc.Debug)",149,"d_non_null"); if (!(jassInternal_checkDebugCollectRef(d))) throw new jass.runtime.PreconditionException("idebughc.Collect","setDebug(idebughc.Debug)",150,"correct_debug_instance"); debug = d; /* postcondition */ if (!((debug==d))) throw new jass.runtime.PostconditionException("idebughc.Collect","setDebug(idebughc.Debug)",154,"debug_valid"); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "setDebug(idebughc.Debug)", false), jassParameters); } /** * <p> Register a statistic with the collector. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@93efe</b>: (statistic!=null) &&<br><b>jass.reflect.AssertionLabel@6c6b2</b>: checkStatisticID(statistic)</code></dd></dl> <dl><dt><b>Ensures:</b></dt><dd><code><b>jass.reflect.AssertionLabel@5ee671</b>: isRegistered(statistic)</code></dd></dl> @concurrency CONCURRENT * @modifies statistics * @param statistic the statistic to register. */ public void register(Statistic statistic) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(statistic)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "register(idebughc.Statistic)", true), jassParameters); /* precondition */ if (!((statistic!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","register(idebughc.Statistic)",167,"statistic_non_null"); if (!(jassInternal_checkStatisticID(statistic))) throw new jass.runtime.PreconditionException("idebughc.Collect","register(idebughc.Statistic)",168,"statistic_id_unchanged"); statistics.put(statistic, statistic); /* postcondition */ if (!(jassInternal_isRegistered(statistic))) throw new jass.runtime.PostconditionException("idebughc.Collect","register(idebughc.Statistic)",172,"statistic_registered"); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "register(idebughc.Statistic)", false), jassParameters); } /** * <p> Check the ID of a statistic and make sure that it hasn't changed * since it was registered. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@6b13c7</b>: (statistic!=null)</code></dd></dl> @concurrency CONCURRENT * @modifies QUERY * @param statistic the statistic to check. */ public boolean checkStatisticID(Statistic statistic) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(statistic)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "checkStatisticID(idebughc.Statistic)", true), jassParameters); boolean jassResult; /* precondition */ if (!((statistic!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","checkStatisticID(idebughc.Statistic)",186,"statistic_non_null"); Object oldValue = statistics.get(statistic); if(oldValue != null) { jassResult = ( (oldValue == statistic)); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "checkStatisticID(idebughc.Statistic)", false), jassParameters); // make sure value hasn't changed. return jassResult; } jassResult = ( true); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "checkStatisticID(idebughc.Statistic)", false), jassParameters); return jassResult; } /** * <p> Unregister a statistic with the collector. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@5f8f5e</b>: (statistic!=null)</code></dd></dl> <dl><dt><b>Ensures:</b></dt><dd><code><b>jass.reflect.AssertionLabel@3d93f4</b>: isRegistered(statistic)</code></dd></dl> @concurrency CONCURRENT * @modifies statistics * @param statistic the statistic to unregister. */ public void unregister(Statistic statistic) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(statistic)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "unregister(idebughc.Statistic)", true), jassParameters); /* precondition */ if (!((statistic!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","unregister(idebughc.Statistic)",206,"statistic_non_null"); statistics.remove(statistic); /* postcondition */ if (!(!jassInternal_isRegistered(statistic))) throw new jass.runtime.PostconditionException("idebughc.Collect","unregister(idebughc.Statistic)",210,"statistic_unregistered"); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "unregister(idebughc.Statistic)", false), jassParameters); } /** * <p> Check to see if a statistic is registered yet. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@3ca5f1</b>: (statistic!=null)</code></dd></dl> @param statistic the statistic to check. * @postcondition (Result == true) iff register(statistic) took place at * some point in time in the execution trace of this collect instance. */ public boolean isRegistered(Statistic statistic) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(statistic)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isRegistered(idebughc.Statistic)", true), jassParameters); boolean jassResult; /* precondition */ if (!((statistic!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","isRegistered(idebughc.Statistic)",223,"statistic_non_null"); jassResult = ((statistics.get(statistic) == statistic)); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isRegistered(idebughc.Statistic)", false), jassParameters); return jassResult; } /** * <p> What is the current value for specific statistic? </p> * * @param statistic the statistic being modified. * @return the old value of the statistic. */ abstract public double currentValue(Statistic statistic); /** * <p> Report on a particular statistic. </p> * * @param statistic the statistic being reported on. * @return a report on the statistic, typically encapsulated in some type * of <code>Report</code> object or just a simple <code>String</code> * textual report. */ abstract public Object report(Statistic statistic); /** * <p> Report on all statistics. </p> * * @return a report on all statistics, typically encapsulated in some * type of Report object or just a simple String textual report. */ abstract public Object reportAll(); /** * <p> Increment a statistic by a specified value. </p> * * @param statistic the statistic being modified. * @param value the amount to increment the statistic. * @return the old value of the statistic. */ abstract public double increment(Statistic statistic, double value); /** * <p> Increment a statistic by the default value. </p> * * @param statistic the statistic being modified. * @return the old value of the statistic. */ abstract public double increment(Statistic statistic); /** * <p> Decrement a statistic by a specified value. </p> * * @param statistic the statistic being modified. * @param value the amount to decrement the statistic. * @return the old value of the statistic. */ abstract public double decrement(Statistic statistic, double value); /** * <p> Decrement a statistic by the default value. </p> * * @param statistic the statistic being modified. * @return the old value of the statistic. */ abstract public double decrement(Statistic statistic); /** * <p> Reset a statistic to the default start value. </p> * * @param statistic the statistic to reset. * @return the old value of the statistic. */ abstract public double reset(Statistic statistic); /** * <p> Set a statistic to a specific value. </p> * * @param statistic the statistic being modified. * @param value the new value of the statistic. * @return the old value of the statistic. */ abstract public double set(Statistic statistic, double value); // Protected Methods /** * <p> Tests to see if the current debug context is interested in a given * category. </p> * * <dl><dt><b>Requires:</b></dt><dd><code><b>jass.reflect.AssertionLabel@329f3d</b>: (category!=null)</code></dd></dl> @param category the category to inspect. * @return a boolean indicating if the category in question is valid at * this time for this context (i.e. debugging framework state, thread, * class invoking the method, etc.) * @see Context */ protected final boolean isValidCategory(String category) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(category)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isValidCategory(java.lang.String)", true), jassParameters); boolean jassResult; /* precondition */ if (!((category!=null))) throw new jass.runtime.PreconditionException("idebughc.Collect","isValidCategory(java.lang.String)",329,"category_non_null"); jassResult = ( debug.debugUtilities.categoryTest(category)); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isValidCategory(java.lang.String)", false), jassParameters); return jassResult; } /** * <p> Tests to see if the current debug context is interested in a given * level. </p> * * @param level the level to inspect. * @return a boolean indicating if the level in question is valid at this * time for this context (i.e. debugging framework state, thread, class * invoking the method, etc.) * @see Context */ protected final boolean isValidLevel(int level) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(level)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isValidLevel(int)", true), jassParameters); boolean jassResult; jassResult = ( debug.debugUtilities.levelTest(level)); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(jassResult)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "isValidLevel(int)", false), jassParameters); return jassResult; } /* --- The following methods of class idebughc.Collect are generated by JASS --- */ public boolean jassInternal_checkDebugCollectRef(Debug d) { return (d.collect == this); } public boolean jassInternal_checkStatisticID(Statistic statistic) { Object oldValue = statistics.get(statistic); if(oldValue != null) { return (oldValue == statistic); } return true; } public boolean jassInternal_isRegistered(Statistic statistic) { return(statistics.get(statistic) == statistic); } protected void finalize () throws java.lang.Throwable { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "finalize()", true), jassParameters); super.finalize(); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "finalize()", false), jassParameters); } public boolean equals (java.lang.Object par0) { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(par0)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "equals(java.lang.Object)", true), jassParameters); boolean returnValue = super.equals(par0); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(returnValue)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "equals(java.lang.Object)", false), jassParameters); return returnValue; } public java.lang.String toString () { jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jass.runtime.traceAssertion.Parameter[] jassParameters; jassParameters = new jass.runtime.traceAssertion.Parameter[] {}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "toString()", true), jassParameters); java.lang.String returnValue = super.toString(); jass.runtime.traceAssertion.CommunicationManager.internalAction = true; jassParameters = new jass.runtime.traceAssertion.Parameter[] {new jass.runtime.traceAssertion.Parameter(returnValue)}; jass.runtime.traceAssertion.CommunicationManager.internalAction = false; jass.runtime.traceAssertion.CommunicationManager.communicate(this, new jass.runtime.traceAssertion.MethodReference("idebughc", "Collect", "toString()", false), jassParameters); return returnValue; } // Package Methods // Private Methods } // end of class Collect /* * Local Variables: * Mode: Java * fill-column: 75 * End: */