docs: def param(f):
      '''
      The @param decorator, usable in an immutable class (see immutable), specifies that the following
      function is actually a transformation on an input parameter; the parameter is required, and is 
      set to the value returned by the function decorated by the parameter; i.e., if you decorate the
      function abc with @param, then imm.abc = x will result in imm's abc attribute being set to the
      value of type(imm).abc(x).
      '''
      (args, varargs, kwargs, dflts) = getargspec_py27like(f)
      if varargs is not None or kwargs is not None or dflts:
          raise ValueError('Params may not accept variable, variadic keyword, or default arguments')
      if len(args) != 1:
          raise ValueError('Parameter transformation functions must take exactly one argument')
      f._pimms_immutable_data_ = {}
      f._pimms_immutable_data_['is_param'] = True
      f._pimms_immutable_data_['name'] = f.__name__
      f = staticmethod(f)
      return f