gap> #
gap> # tracing of operations
gap> #
gap> 
gap> # create a dummy operation
gap> o:=NewOperation("dummy",[]);
<Operation "dummy">
gap> InstallOtherMethod(o,[],{}->[]);
gap> InstallOtherMethod(o,[IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> 
gap> # without tracing
gap> o();
[  ]
gap> o(1);
[ 1 ]
gap> o(1,2);
[ 1, 2 ]
gap> o(1,2,3);
[ 1, 2, 3 ]
gap> o(1,2,3,4);
[ 1, 2, 3, 4 ]
gap> o(1,2,3,4,5);
[ 1, 2, 3, 4, 5 ]
gap> o(1,2,3,4,5,6);
[ 1, 2, 3, 4, 5, 6 ]
gap> o(1,2,3,4,5,6,7); # not (yet?) supported
Error, sorry: cannot yet have X argument operations
not in any function at *stdin*:25
gap> 
gap> # with tracing
gap> TraceMethods( o );
gap> o();
#I  dummy at *stdin*:8
[  ]
gap> o(1);
#I  dummy at *stdin*:9
[ 1 ]
gap> o(1,2);
#I  dummy at *stdin*:11
[ 1, 2 ]
gap> o(1,2,3);
#I  dummy at *stdin*:12
[ 1, 2, 3 ]
gap> o(1,2,3,4);
#I  dummy at *stdin*:13
[ 1, 2, 3, 4 ]
gap> o(1,2,3,4,5);
#I  dummy at *stdin*:14
[ 1, 2, 3, 4, 5 ]
gap> o(1,2,3,4,5,6);
#I  dummy at *stdin*:15
[ 1, 2, 3, 4, 5, 6 ]
gap> o(1,2,3,4,5,6,7);
Error, sorry: cannot yet have X argument operations
not in any function at *stdin*:36
gap> UntraceMethods( o ); # not (yet?) supported
gap> 
gap> # again without tracing
gap> o();
[  ]
gap> o(1);
[ 1 ]
gap> o(1,2);
[ 1, 2 ]
gap> o(1,2,3);
[ 1, 2, 3 ]
gap> o(1,2,3,4);
[ 1, 2, 3, 4 ]
gap> o(1,2,3,4,5);
[ 1, 2, 3, 4, 5 ]
gap> o(1,2,3,4,5,6);
[ 1, 2, 3, 4, 5, 6 ]
gap> o(1,2,3,4,5,6,7); # not (yet?) supported
Error, sorry: cannot yet have X argument operations
not in any function at *stdin*:47
gap> 
gap> #
gap> # tracing of constructors
gap> #
gap> 
gap> # create a dummy constructor
gap> o:=NewConstructor("foobar",[IsObject]);
<Constructor "foobar">
gap> InstallOtherMethod(o,[IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> InstallOtherMethod(o,[IsInt,IsInt,IsInt,IsInt,IsInt,IsInt],{arg...}->arg);
gap> 
gap> # without tracing
gap> o(IsInt);
[ <Category "IsInt"> ]
gap> o(IsInt,2);
[ <Category "IsInt">, 2 ]
gap> o(IsInt,2,3);
[ <Category "IsInt">, 2, 3 ]
gap> o(IsInt,2,3,4);
[ <Category "IsInt">, 2, 3, 4 ]
gap> o(IsInt,2,3,4,5);
[ <Category "IsInt">, 2, 3, 4, 5 ]
gap> o(IsInt,2,3,4,5,6);
[ <Category "IsInt">, 2, 3, 4, 5, 6 ]
gap> o(IsInt,2,3,4,5,6,7); # not (yet?) supported
Error, sorry: cannot yet have X argument constructors
not in any function at *stdin*:70
gap> 
gap> # with tracing
gap> TraceMethods( o );
gap> o(IsInt);
#I  foobar at *stdin*:55
[ <Category "IsInt"> ]
gap> o(IsInt,2);
#I  foobar at *stdin*:57
[ <Category "IsInt">, 2 ]
gap> o(IsInt,2,3);
#I  foobar at *stdin*:58
[ <Category "IsInt">, 2, 3 ]
gap> o(IsInt,2,3,4);
#I  foobar at *stdin*:59
[ <Category "IsInt">, 2, 3, 4 ]
gap> o(IsInt,2,3,4,5);
#I  foobar at *stdin*:60
[ <Category "IsInt">, 2, 3, 4, 5 ]
gap> o(IsInt,2,3,4,5,6);
#I  foobar at *stdin*:61
[ <Category "IsInt">, 2, 3, 4, 5, 6 ]
gap> o(IsInt,2,3,4,5,6,7); # not (yet?) supported
Error, sorry: cannot yet have X argument constructors
not in any function at *stdin*:80
gap> UntraceMethods( o );
gap> 
gap> # again without tracing
gap> o(IsInt);
[ <Category "IsInt"> ]
gap> o(IsInt,2);
[ <Category "IsInt">, 2 ]
gap> o(IsInt,2,3);
[ <Category "IsInt">, 2, 3 ]
gap> o(IsInt,2,3,4);
[ <Category "IsInt">, 2, 3, 4 ]
gap> o(IsInt,2,3,4,5);
[ <Category "IsInt">, 2, 3, 4, 5 ]
gap> o(IsInt,2,3,4,5,6);
[ <Category "IsInt">, 2, 3, 4, 5, 6 ]
gap> o(IsInt,2,3,4,5,6,7); # not (yet?) supported
Error, sorry: cannot yet have X argument constructors
not in any function at *stdin*:90
gap> QUIT;
