docs: def len(self,*args,**kwargs):
          """
              Returns the number of spikes or the length of a Dimension in the respective unit::
  
                  spikes.len()    # returns the number of entries ie. the number of spikes
  
                  spikes.len('t') # returns eg. ms
                  spikes.len('N') # returns the number of neurons ()
  
              If multiple arguments are supplied, a list is returned with the respective lengths.
  
              # Note: a previous version of this function created the total length of the combination 
                 of the supplied arguments (given they are discrete). This behaviour can be recreated 
                 by calling np.prod() in the result.
  
              .. note::
  
                  Discrete Labels (units='1') *may* behave differently than continuous Labels (units='1.0' or 's' etc.)
                  To emulate the discrete behaviour, you can pass `end_at_end=False` to the function.
                  The default behaviour is continuous if `units != '1'` (that is the output units if specified).
  
                  The length of a discrete variable from 0...5 is 6: 0, 1, 2, 3, 4, 5.
                  The length of the same range continuously is 5:
                      0.0-1.0,1.0-2.0,2.0-3.0,3.0-4.0,4.0-5.0 (at a resolution of 1.0).
          """
          if len(args) == 0 or args == None:
              return self.spike_times.matrix.shape[0]
          if len(args) == 1:
              return self.spike_times.get_label(args[0]).len(**kwargs)
          return [self.spike_times.get_label(a).len(**kwargs) for a in args]