code: def requires_ROOT(version, exception=False):
      
      def decorator(f):
          @wraps(f)
          def wrapper(*args, **kwargs):
              if ROOT_VERSION < version:
                  msg = ("{0} requires at least ROOT {1} "
                      "but you are using {2}".format(
                          f.__name__, version, ROOT_VERSION))
                  if inspect.isclass(exception) and issubclass(exception, Exception):
                      raise exception
                  elif exception:
                      raise NotImplementedError(msg)
                  warnings.warn(msg)
                  return None
              return f(*args, **kwargs)
      return decorator
docs: A decorator for functions or methods that require a minimum ROOT version.
      If `exception` is False (the default) a warning is issued and None is
      returned, otherwise a `NotImplementedError` exception is raised.
      `exception` may also be an `Exception` in which case it will be raised
      instead of `NotImplementedError`.