original_string: public static function instance($prototype = null)
      {
          if (!self::$instance || $prototype) {
              if ($prototype instanceof HTMLPurifier) {
                  self::$instance = $prototype;
              } elseif ($prototype) {
                  self::$instance = new HTMLPurifier($prototype);
              } else {
                  self::$instance = new HTMLPurifier();
              }
          }
          return self::$instance;
      }
code: public static function instance($prototype = null)
      {
          if (!self::$instance || $prototype) {
              if ($prototype instanceof HTMLPurifier) {
                  self::$instance = $prototype;
              } elseif ($prototype) {
                  self::$instance = new HTMLPurifier($prototype);
              } else {
                  self::$instance = new HTMLPurifier();
              }
          }
          return self::$instance;
      }
code_tokens: public static function instance ( $ prototype = null ) { if ( ! self :: $ instance || $ prototype ) { if ( $ prototype instanceof HTMLPurifier ) { self :: $ instance = $ prototype ; } elseif ( $ prototype ) { self :: $ instance = new HTMLPurifier ( $ prototype ) ; } else { self :: $ instance = new HTMLPurifier ( ) ; } } return self :: $ instance ; }
docstring: Singleton for enforcing just one HTML Purifier in your system
  
  @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
  HTMLPurifier instance to overload singleton with,
  or HTMLPurifier_Config instance to configure the
  generated version with.
  
  @return HTMLPurifier
docstring_tokens: Singleton for enforcing just one HTML Purifier in your system