code: def experimental(*, reason, issues=None):
      """
      A decorator to mark a function, method or class as experimental, meaning it may not be complete.
  
      Args:
          reason (str): why this is experimental
          issues (list of int, optional): any relevant ``stellargraph/stellargraph`` issues
      """
      if issues is None:
          issues = []
  
      def decorator(decl):
          # add warning at the start of the documentation
          # <https://docutils.sourceforge.io/docs/ref/rst/directives.html#caution>
          direct_msg, rst_msg = messages(decl, reason, issues)
          if decl.__doc__ is not None:
              decl.__doc__ = f"{rst_msg}\n\n{dedent(decl.__doc__)}"
          else:
              decl.__doc__ = rst_msg
  
          is_class = isinstance(decl, type)
  
          func_to_wrap = decl.__init__ if is_class else decl
  
          @functools.wraps(func_to_wrap)
          def new_func(*args, **kwargs):
              warnings.warn(
                  direct_msg, ExperimentalWarning, stacklevel=2
              )
              return func_to_wrap(*args, **kwargs)
  
          if is_class:
              decl.__init__ = new_func
              return decl
          else:
              return new_func
  
      return decorator
  
file_path: stellargraph/stellargraph/core/experimental.py
imports: import functools
  from textwrap import dedent
  import warnings
label_desc: Use image node_id 4 for calling a global function with example usage: experimental() and returns: decorator, func_to_wrap, decl, new_func