% File src/library/methods/man/MethodsList-class.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2015 R Core Team
% Distributed under GPL 2 or later

\name{MethodsList-class}
\alias{MethodsList-class}
\alias{body<-,MethodDefinition-method}
\docType{class}
\title{Class MethodsList, Defunct Representation of Methods }
\description{ This class of objects was used in the original
  implementation of the package to control method dispatch.  Its use
  is now defunct, but object appear as the default method slot in
  generic functions.  This and any other remaining uses will be
  removed in the future.

 For the modern alternative, see \linkS4class{listOfMethods}.

The details in this documentation are retained to allow analysis of
old-style objects. }
\section{Slots}{\describe{

  \item{\code{argument}:}{Object of class \code{"name"}.  The name of the
    argument being used for dispatch at this level. }
  \item{\code{methods}:}{A named list of the methods (and method lists)
    defined \emph{explicitly} for this argument.
 The names are the names of classes, and the corresponding
  element defines the method or methods to be used if the corresponding
  argument has that class.  See the details below.}
  \item{\code{allMethods}:}{A named list,  contains
    all the directly defined methods from the \code{methods} slot, plus
    any inherited methods.  Ignored when methods tables are used for dispatch (see \link{Methods_Details}). }
}}

\details{
  Suppose a function \code{f} has
  formal arguments \code{x} and \code{y}.  The methods list object for
  that function has the object \code{as.name("x")} as its
  \code{argument} slot.  An element of the methods named \code{"track"}
  is selected if the actual argument corresponding to \code{x} is an
  object of class \code{"track"}.  If there is such an element, it can
  generally be either a function or another methods list object.

  In the first case, the function defines the method to use for any call
  in which \code{x} is of class \code{"track"}.  In the second case, the
  new methods list object defines the available methods depending on
  the remaining formal arguments, in this example, \code{y}.

  Each method  corresponds conceptually to a \emph{signature};
  that is a named list of classes, with names corresponding to some or
  all of the formal arguments.  In the previous example, if selecting
  class \code{"track"} for \code{x}, finding that the selection was
  another methods list and then selecting class \code{"numeric"} for
  \code{y} would produce a method associated with the signature
  \code{x = "track", y = "numeric"}.

}

\section{Extends}{
Class \code{"OptionalMethods"}, directly.
}
\keyword{classes}
\keyword{methods}
