Most users will use a different way of installing methods.

`installMethod(M,f)` -- installs a function `f` as a nullary method under the name `M`. This is a replacement for the syntax M () := f, which hasn't yet been made to work. As currently implemented, this is also the same as `nullaryMethods#(1:M) = f`.

`installMethod(M,A,f)` -- installs a function `f` as a unary method for the class `A` under the name `M`. This is the same as M A := f if `M` is a function. As currently implemented, this is also the same as `A#M = f`.

`installMethod(M,A,B,f)` -- installs a function `f` as a binary method for classes `A` and `B` under the name `M`. This is the same as `M(A,B) := f` if `M` is a function, or the same as `A M B := f` if `M` is a binary operator. As currently implemented, this is also the same as `Y#(M,A,B) = f`, where `Y` is the younger of `A` and `B`.

`installMethod(M,A,B,C,f)` -- installs a function `f` as a ternary method for classes `A`, `B`, and `C` under the name `M`. This is the same as `M(A,B,C) := f` if `f` is a function. As currently implemented, this is also the same as `Y#(M,A,B,C) = f`, where `Y` is the youngest of `A`, `B`, and `C`.

The object installMethod is a compiled function.