A call to  selectSuperClasses(cl) returns a list of
  superclasses, similarly to
  extends(cl).  Additional arguments restrict the class names
  returned to direct superclasses and/or to non-virtual classes.
Either way, programming with the result, particularly using
  sapply, can be useful.
To find superclasses with more generally defined properties, one can program
  with the result returned by extends when called with one
  class as argument.
  By default, the call returns a character vector including the name of the class
  itself and of all its superclasses.
  Alternatively,
  if extends is called with fullInfo =
    TRUE, the return value is a named list, its names being the previous
  character vector.  The elements of the list corresponding to
  superclasses are objects of class
  '>SClassExtension. Of the information in these objects, one piece can be useful:
  the number of generations between the classes, given by the
  "distance" slot.
Programming with the result of the call to extends, particularly using
  sapply, can select superclasses.
  The programming technique is to define a test function that returns
  TRUE for superclasses or relationships obeying some
  requirement. For example, to find only next-to-direct superclasses,
  use this function with the list of extension objects:
function(what) is(what, "SClassExtension") && what@distance == 2
or, to find only superclasses from "myPkg", use this function
  with the simple vector of names:
function(what) getClassDef(what)@package == "myPkg"
Giving such functions as an argument to sapply called on the output of
  extends allows you to find
  superclasses with desired properties.  See the examples below.
Note that the function using extension objects must test the class of its argument since,
  unfortunately for this purpose, the list returned by extends includes
  class1 itself, as the object TRUE.