original_string: public static function share($callable)
      {
          if (!is_object($callable) || !method_exists($callable, '__invoke')) {
              throw new InvalidArgumentException('Callable is not a Closure or invokable object.');
          }
          
          return function ($c) use ($callable) {
              static $object;
  
              if (null === $object) {
                  $object = $callable($c);
              }
  
              return $object;
          };
      }
code: public static function share($callable)
      {
          if (!is_object($callable) || !method_exists($callable, '__invoke')) {
              throw new InvalidArgumentException('Callable is not a Closure or invokable object.');
          }
          
          return function ($c) use ($callable) {
              static $object;
  
              if (null === $object) {
                  $object = $callable($c);
              }
  
              return $object;
          };
      }
code_tokens: public static function share ( $ callable ) { if ( ! is_object ( $ callable ) || ! method_exists ( $ callable , '__invoke' ) ) { throw new InvalidArgumentException ( 'Callable is not a Closure or invokable object.' ) ; } return function ( $ c ) use ( $ callable ) { static $ object ; if ( null === $ object ) { $ object = $ callable ( $ c ) ; } return $ object ; } ; }
docstring: Share a clousure object or callback object
  
  @access public
  @param $callable
  @return callable
  @throws InvalidArgumentException
docstring_tokens: Share a clousure object or callback object