Index: generic/gentclAPI.decls
===================================================================
diff -u -rd34c425b8c87ad62b8879114f4aa8454162f09ed -rc09536ecf46b5a272a87a42a7deb59b852df5ec8
--- generic/gentclAPI.decls	(.../gentclAPI.decls)	(revision d34c425b8c87ad62b8879114f4aa8454162f09ed)
+++ generic/gentclAPI.decls	(.../gentclAPI.decls)	(revision c09536ecf46b5a272a87a42a7deb59b852df5ec8)
@@ -298,19 +298,19 @@
 infoObjectMethod invar XOTclObjInfoInvarMethod {
   {-argName "object" -required 1 -type object}
 }
-#### TODO should object methods have -per-object?
+
 infoObjectMethod method XOTclObjInfoMethodMethod {
   {-argName "object" -type object}
-  {-argName "infomethodsubcmd" -type "definition|name|parameter|type"}
+  {-argName "infomethodsubcmd" -type "args|definition|name|parameter|type"}
   {-argName "name"}
 }
+### TODO move finally to infoclassmethod
 infoClassMethod method XOTclClassInfoMethodMethod {
   {-argName "class" -type class}
-  {-argName "infomethodsubcmd" -type "definition|name|parameter|type"}
+  {-argName "infomethodsubcmd" -type "args|definition|name|parameter|type"}
   {-argName "name"}
 }
 
-### TODO should object methods have -per-object?
 infoObjectMethod methods XOTclObjInfoMethodsMethod {
   {-argName "object" -type object}
   {-argName "-defined"}
@@ -319,6 +319,7 @@
   {-argName "-incontext"}
   {-argName "pattern"}
 }
+### TODO move finally to infoclassmethod
 infoClassMethod methods XOTclClassInfoMethodsMethod {
   {-argName "object" -type class}
   {-argName "-defined"}
@@ -341,11 +342,6 @@
 infoObjectMethod parent XOTclObjInfoParentMethod {
   {-argName "object" -required 1 -type object}
 }
-infoObjectMethod params XOTclObjInfoParamsMethod {
-  {-argName "object" -required 1 -type object}
-  {-argName "methodName" -required 1}
-  {-argName "-varNames"}
-}
 infoObjectMethod post XOTclObjInfoPostMethod {
   {-argName "object" -required 1 -type object}
   {-argName "methodName" -required 1}
@@ -418,11 +414,6 @@
   {-argName "-closure"}
   {-argName "pattern" -type objpattern}
 }
-infoClassMethod instparams XOTclClassInfoInstparamsMethod {
-  {-argName "class" -required 1 -type class}
-  {-argName "methodName" -required 1}
-  {-argName "-varNames"}
-}
 infoClassMethod instpost XOTclClassInfoInstpostMethod {
   {-argName "class"  -required 1 -type class}
   {-argName "methodName" -required 1}
Index: generic/tclAPI.h
===================================================================
diff -u -rd34c425b8c87ad62b8879114f4aa8454162f09ed -rc09536ecf46b5a272a87a42a7deb59b852df5ec8
--- generic/tclAPI.h	(.../tclAPI.h)	(revision d34c425b8c87ad62b8879114f4aa8454162f09ed)
+++ generic/tclAPI.h	(.../tclAPI.h)	(revision c09536ecf46b5a272a87a42a7deb59b852df5ec8)
@@ -1,12 +1,12 @@
 
 static int convertToInfomethodsubcmd(Tcl_Interp *interp, Tcl_Obj *objPtr, XOTclParam CONST *pPtr, ClientData *clientData) {
   int index, result;
-  static CONST char *opts[] = {"definition", "name", "parameter", "type", NULL};
+  static CONST char *opts[] = {"args", "definition", "name", "parameter", "type", NULL};
   result = Tcl_GetIndexFromObj(interp, objPtr, opts, "infomethodsubcmd", 0, &index);
   *clientData = (ClientData) index + 1;
   return result;
 }
-enum InfomethodsubcmdIdx {InfomethodsubcmdNULL, InfomethodsubcmdDefinitionIdx, InfomethodsubcmdNameIdx, InfomethodsubcmdParameterIdx, InfomethodsubcmdTypeIdx};
+enum InfomethodsubcmdIdx {InfomethodsubcmdNULL, InfomethodsubcmdArgsIdx, InfomethodsubcmdDefinitionIdx, InfomethodsubcmdNameIdx, InfomethodsubcmdParameterIdx, InfomethodsubcmdTypeIdx};
   
 static int convertToMethodtype(Tcl_Interp *interp, Tcl_Obj *objPtr, XOTclParam CONST *pPtr, ClientData *clientData) {
   int index, result;
@@ -109,7 +109,6 @@
 static int XOTclClassInfoInstancesMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclClassInfoInstinvarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclClassInfoInstmixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
-static int XOTclClassInfoInstparamsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclClassInfoInstpostMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclClassInfoInstpreMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclClassInfoMethodMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
@@ -134,7 +133,6 @@
 static int XOTclObjInfoMethodsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclObjInfoMixinMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclObjInfoMixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
-static int XOTclObjInfoParamsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclObjInfoParentMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclObjInfoPostMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
 static int XOTclObjInfoPreMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []);
@@ -205,7 +203,6 @@
 static int XOTclClassInfoInstancesMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj);
 static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass *class);
 static int XOTclClassInfoInstmixinofMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj);
-static int XOTclClassInfoInstparamsMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName, int withVarnames);
 static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName);
 static int XOTclClassInfoInstpreMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName);
 static int XOTclClassInfoMethodMethod(Tcl_Interp *interp, XOTclClass *class, int infomethodsubcmd, char *name);
@@ -230,7 +227,6 @@
 static int XOTclObjInfoMethodsMethod(Tcl_Interp *interp, XOTclObject *object, int withDefined, int withMethodtype, int withNomixins, int withIncontext, char *pattern);
 static int XOTclObjInfoMixinMethod(Tcl_Interp *interp, XOTclObject *object, int withGuards, int withOrder, char *patternString, XOTclObject *patternObj);
 static int XOTclObjInfoMixinguardMethod(Tcl_Interp *interp, XOTclObject *object, char *mixin);
-static int XOTclObjInfoParamsMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName, int withVarnames);
 static int XOTclObjInfoParentMethod(Tcl_Interp *interp, XOTclObject *object);
 static int XOTclObjInfoPostMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName);
 static int XOTclObjInfoPreMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName);
@@ -302,7 +298,6 @@
  XOTclClassInfoInstancesMethodIdx,
  XOTclClassInfoInstinvarMethodIdx,
  XOTclClassInfoInstmixinofMethodIdx,
- XOTclClassInfoInstparamsMethodIdx,
  XOTclClassInfoInstpostMethodIdx,
  XOTclClassInfoInstpreMethodIdx,
  XOTclClassInfoMethodMethodIdx,
@@ -327,7 +322,6 @@
  XOTclObjInfoMethodsMethodIdx,
  XOTclObjInfoMixinMethodIdx,
  XOTclObjInfoMixinguardMethodIdx,
- XOTclObjInfoParamsMethodIdx,
  XOTclObjInfoParentMethodIdx,
  XOTclObjInfoPostMethodIdx,
  XOTclObjInfoPreMethodIdx,
@@ -849,26 +843,6 @@
 }
 
 static int
-XOTclClassInfoInstparamsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-  parseContext pc;
-
-  if (ArgumentParse(interp, objc, objv, NULL, objv[0], 
-                     method_definitions[XOTclClassInfoInstparamsMethodIdx].paramDefs, 
-                     method_definitions[XOTclClassInfoInstparamsMethodIdx].nrParameters, 
-                     &pc) != TCL_OK) {
-    return TCL_ERROR;
-  } else {
-    XOTclClass *class = (XOTclClass *)pc.clientData[0];
-    char *methodName = (char *)pc.clientData[1];
-    int withVarnames = (int )pc.clientData[2];
-
-    parseContextRelease(&pc);
-    return XOTclClassInfoInstparamsMethod(interp, class, methodName, withVarnames);
-
-  }
-}
-
-static int
 XOTclClassInfoInstpostMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
   parseContext pc;
 
@@ -1396,26 +1370,6 @@
 }
 
 static int
-XOTclObjInfoParamsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-  parseContext pc;
-
-  if (ArgumentParse(interp, objc, objv, NULL, objv[0], 
-                     method_definitions[XOTclObjInfoParamsMethodIdx].paramDefs, 
-                     method_definitions[XOTclObjInfoParamsMethodIdx].nrParameters, 
-                     &pc) != TCL_OK) {
-    return TCL_ERROR;
-  } else {
-    XOTclObject *object = (XOTclObject *)pc.clientData[0];
-    char *methodName = (char *)pc.clientData[1];
-    int withVarnames = (int )pc.clientData[2];
-
-    parseContextRelease(&pc);
-    return XOTclObjInfoParamsMethod(interp, object, methodName, withVarnames);
-
-  }
-}
-
-static int
 XOTclObjInfoParentMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
   parseContext pc;
 
@@ -2374,11 +2328,6 @@
   {"-closure", 0, 0, convertToString},
   {"pattern", 0, 0, convertToObjpattern}}
 },
-{"::xotcl::cmd::ClassInfo::instparams", XOTclClassInfoInstparamsMethodStub, 3, {
-  {"class", 1, 0, convertToClass},
-  {"methodName", 1, 0, convertToString},
-  {"-varNames", 0, 0, convertToString}}
-},
 {"::xotcl::cmd::ClassInfo::instpost", XOTclClassInfoInstpostMethodStub, 2, {
   {"class", 1, 0, convertToClass},
   {"methodName", 1, 0, convertToString}}
@@ -2490,11 +2439,6 @@
   {"object", 1, 0, convertToObject},
   {"mixin", 1, 0, convertToString}}
 },
-{"::xotcl::cmd::ObjectInfo::params", XOTclObjInfoParamsMethodStub, 3, {
-  {"object", 1, 0, convertToObject},
-  {"methodName", 1, 0, convertToString},
-  {"-varNames", 0, 0, convertToString}}
-},
 {"::xotcl::cmd::ObjectInfo::parent", XOTclObjInfoParentMethodStub, 1, {
   {"object", 1, 0, convertToObject}}
 },
Index: generic/xotcl.c
===================================================================
diff -u -rd34c425b8c87ad62b8879114f4aa8454162f09ed -rc09536ecf46b5a272a87a42a7deb59b852df5ec8
--- generic/xotcl.c	(.../xotcl.c)	(revision d34c425b8c87ad62b8879114f4aa8454162f09ed)
+++ generic/xotcl.c	(.../xotcl.c)	(revision c09536ecf46b5a272a87a42a7deb59b852df5ec8)
@@ -9657,18 +9657,22 @@
         Tcl_SetObjResult(interp, resultObj);
         return TCL_OK;
       }
-
+    case InfomethodsubcmdArgsIdx:
+      {
+        Tcl_Command importedCmd = GetOriginalCommand(cmd);
+        return ListCmdParams(interp, importedCmd, methodName, 1);
+      }
     case InfomethodsubcmdParameterIdx:
       {
         Tcl_Command importedCmd = GetOriginalCommand(cmd);
         return ListCmdParams(interp, importedCmd, methodName, 0);
       }
     }
-
     /* 
-     * Subcommands different per type of method.  converter in
+     * Subcommands different per type of method. The Converter in
      * InfoMethods defines the types:
-     * "all|scripted|system|alias|forwarder|object|setter"
+     *
+     *    "all|scripted|system|alias|forwarder|object|setter"
      */
     if (GetTclProcFromCommand(cmd)) {
       /* a scripted method */
@@ -12636,25 +12640,24 @@
 }
 
 static int XOTclObjInfoMethodMethod(Tcl_Interp *interp, XOTclObject *object, 
-                                    int subcmd,
-                                    char *methodName) {
+                                    int subcmd, char *methodName) {
   Tcl_Namespace *nsPtr = object->nsPtr;
   return ListMethod(interp, object, 
                     methodName, nsPtr ? FindMethod(nsPtr, methodName) : NULL, 
                     subcmd, 1);
 }
 
 static int XOTclClassInfoMethodMethod(Tcl_Interp *interp, XOTclClass *class, 
-                                      int subcmd,
-                                      char *methodName) {
+                                      int subcmd, char *methodName) {
   Tcl_Namespace *nsPtr = class->nsPtr;
   return ListMethod(interp, &class->object, 
                     methodName, nsPtr ? FindMethod(nsPtr, methodName) : NULL, 
                     subcmd, 0);
 }
 
-static int XOTclObjInfoMixinMethod(Tcl_Interp *interp, XOTclObject *object, int withGuards, int withOrder,
-                        char *patternString, XOTclObject *patternObj) {
+static int XOTclObjInfoMixinMethod(Tcl_Interp *interp, XOTclObject *object, 
+                                   int withGuards, int withOrder,
+                                   char *patternString, XOTclObject *patternObj) {
 
   if (withOrder) {
     if (!(object->flags & XOTCL_MIXIN_ORDER_VALID))
@@ -12669,12 +12672,6 @@
   return object->opt ? GuardList(interp, object->opt->mixins, mixin) : TCL_OK;
 }
 
-static int XOTclObjInfoParamsMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName, int withVarnames) {
-  return ListCmdParams(interp,
-                       object->nsPtr ? FindMethod(object->nsPtr, methodName) : NULL,
-                       methodName, withVarnames);
-}
-
 static int XOTclObjInfoParentMethod(Tcl_Interp *interp, XOTclObject *object) {
   if (object->id) {
     Tcl_SetResult(interp, NSCmdFullName(object->id), TCL_VOLATILE);
@@ -12899,10 +12896,6 @@
   return TCL_OK;
 }
 
-static int XOTclClassInfoInstparamsMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName, int withVarnames) {
-  return ListCmdParams(interp, FindMethod(class->nsPtr, methodName), methodName, withVarnames);
-}
-
 static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName) {
   if (class->opt) {
     XOTclProcAssertion *procs = AssertionFindProcs(class->opt->assertions, methodName);
Index: library/lib/xotcl1.xotcl
===================================================================
diff -u -rd34c425b8c87ad62b8879114f4aa8454162f09ed -rc09536ecf46b5a272a87a42a7deb59b852df5ec8
--- library/lib/xotcl1.xotcl	(.../xotcl1.xotcl)	(revision d34c425b8c87ad62b8879114f4aa8454162f09ed)
+++ library/lib/xotcl1.xotcl	(.../xotcl1.xotcl)	(revision c09536ecf46b5a272a87a42a7deb59b852df5ec8)
@@ -156,19 +156,16 @@
   #
   #   already emulated:
   #
-  #    => info params .... replaces
+  #    => info method parameter .... replaces
   #     info args
   #     info nonposargs
   #     info default
   #
-  #    => info instparams .... replaces
+  #    => info -per-object method parameter .... replaces
   #     info instargs
   #     info instnonposargs
   #     info instdefault
   #
-  #    => maybe instead of "info params" and "info instparams"
-  #     info params ?-per-object?
-  #
   #    => info method .... replaces
   #     info body
   #     info instbody
@@ -200,31 +197,31 @@
   # TODO move unknown handler for Class into a library
   #
 
-  proc ::xotcl::info_args {inst o method} {
+  proc ::xotcl::info_args {allocation o method} {
   set result [list]
   foreach \
-      argName [::xotcl::classInfo ${inst}params $o $method -varNames] \
-      flag    [::xotcl::classInfo ${inst}params $o $method] {
+      argName [::xotcl::cmd::${allocation}Info::method $o args $method] \
+      flag    [::xotcl::cmd::${allocation}Info::method $o parameter $method] {
 	if {[string match -* $flag]} continue
 	lappend result $argName
       }
     #puts stderr "+++ get ${inst}args for $o $method => $result"
     return $result
   }
 
-  proc ::xotcl::info_nonposargs {inst o method} {
+  proc ::xotcl::info_nonposargs {allocation o method} {
     set result [list]
-    foreach flag [::xotcl::classInfo ${inst}params $o $method] {
+    foreach flag [::xotcl::cmd::${allocation}Info::method $o parameter $method] {
       if {![string match -* $flag]} continue
       lappend result $flag
     }
     #puts stderr "+++ get ${inst}nonposargs for $o $method => $result"
     return $result
   }
-  proc ::xotcl::info_default {inst o method arg varName} {
+  proc ::xotcl::info_default {allocation o method arg varName} {
     foreach \
-        argName [::xotcl::classInfo ${inst}params $o $method -varNames] \
-        flag    [::xotcl::classInfo ${inst}params $o $method] {
+        argName [::xotcl::cmd::${allocation}Info::method $o args $method] \
+        flag    [::xotcl::cmd::${allocation}Info::method $o parameter $method] {
           if {$argName eq $arg} {
             upvar 3 $varName default
             if {[llength $flag] == 2} {
@@ -240,12 +237,12 @@
     error "procedure \"$method\" doesn't have an argument \"$varName\""
   }
   classInfo eval {
-    .method instargs {o method} {::xotcl::info_args inst $o $method}
-    .method args     {o method} {::xotcl::info_args "" $o $method}
-    .method instnonposargs {o method} {::xotcl::info_nonposargs inst $o $method}
-    .method nonposargs     {o method} {::xotcl::info_nonposargs "" $o $method}
-    .method instdefault {o method arg var} {::xotcl::info_default inst $o $method $arg $var}
-    .method default     {o method arg var} {::xotcl::info_default "" $o $method $arg $var}
+    .method instargs {o method} {::xotcl::info_args Class $o $method}
+    .method args     {o method} {::xotcl::info_args Object $o $method}
+    .method instnonposargs {o method} {::xotcl::info_nonposargs Class $o $method}
+    .method nonposargs     {o method} {::xotcl::info_nonposargs Object $o $method}
+    .method instdefault {o method arg var} {::xotcl::info_default Class $o $method $arg $var}
+    .method default     {o method arg var} {::xotcl::info_default Object $o $method $arg $var}
 
     # info options emulated by "info method"
     .method instbody    {o methodName} {
@@ -268,9 +265,9 @@
   }
 
   objectInfo eval {
-    .method args        {o method} {::xotcl::info_args "" $o $method}
-    .method nonposargs  {o method} {::xotcl::info_nonposargs "" $o $method}
-    .method default     {o method arg var} {::xotcl::info_default "" $o $method $arg $var}
+    .method args        {o method} {::xotcl::info_args Object $o $method}
+    .method nonposargs  {o method} {::xotcl::info_nonposargs Object $o $method}
+    .method default     {o method arg var} {::xotcl::info_default Object $o $method $arg $var}
 
     # info options emulated by "info method"
     .method body        {o methodName} {
Index: tests/testx.xotcl
===================================================================
diff -u -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f -rc09536ecf46b5a272a87a42a7deb59b852df5ec8
--- tests/testx.xotcl	(.../testx.xotcl)	(revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f)
+++ tests/testx.xotcl	(.../testx.xotcl)	(revision c09536ecf46b5a272a87a42a7deb59b852df5ec8)
@@ -1349,11 +1349,11 @@
       set r [anObject aProc]
       if {$i > 0} {
 	::errorCheck $InfoTraceResult \
-	    "{::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-cleanup aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-recreate aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \
+	    "{::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-cleanup aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-recreate aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \
 	"FilterInfo InfoTrace: Filter information wrong (b)"
       } else {
 	::errorCheck $InfoTraceResult \
-	    "{::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-alloc aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \
+	    "{::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-alloc aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \
 	  "FilterInfo InfoTrace: Filter information wrong"
       }
     }
@@ -3335,7 +3335,7 @@
     ::errorCheck [o mixin XY4] ::XY4 " __unknown XY4"
   }
 
-  ::errorCheck [UnknownClass info info] {valid options are: alias, args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars} "info info"
+  ::errorCheck [UnknownClass info info] {valid options are: alias, args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars} "info info"
 
   # clear unknown handler to avoid strange results later
   Class proc __unknown "" ""