final protected static function getInstance()
    {
        $backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
        $className = self::retrieveNameOfSuperclassFor(
            $backtrace[1]['class']
        );
        $constantName = $backtrace[1]['function'];
        $constantOrdinal = self::retrieveOrdinalFor($constantName);
        $constructorArguments = \func_get_args();

        return $className::getMultitonInstance(
            $constantName,
            $constantOrdinal,
            $constructorArguments
        );
    }
final protected static function getInstance()
    {
        $backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
        $className = self::retrieveNameOfSuperclassFor(
            $backtrace[1]['class']
        );
        $constantName = $backtrace[1]['function'];
        $constantOrdinal = self::retrieveOrdinalFor($constantName);
        $constructorArguments = \func_get_args();

        return $className::getMultitonInstance(
            $constantName,
            $constantOrdinal,
            $constructorArguments
        );
    }
final protected static function getInstance ( ) { $ backtrace = \ debug_backtrace ( \ DEBUG_BACKTRACE_IGNORE_ARGS ) ; $ className = self :: retrieveNameOfSuperclassFor ( $ backtrace [ 1 ] [ 'class' ] ) ; $ constantName = $ backtrace [ 1 ] [ 'function' ] ; $ constantOrdinal = self :: retrieveOrdinalFor ( $ constantName ) ; $ constructorArguments = \ func_get_args ( ) ; return $ className :: getMultitonInstance ( $ constantName , $ constantOrdinal , $ constructorArguments ) ; }
Creates and returns an enumeration constant for the specified enumeration
type with the specified name.

This method implements the *Lazy Load* implementation pattern.

Use this method as follows in a subclass of this class:

/---code php
final class ConcreteEnum
extends FlorianWolters\Component\Core\Enum\EnumAbstract
{
/** @return ConcreteEnum {@*}
final public static function CONSTANT()
{
return self::getInstance();
}
}
\---

@return EnumAbstract The enumeration constant of the specified
enumeration type with the specified name.
@throws InvalidArgumentException If the specified enumeration type has no
enumeration constant with the specified
name, or the specified class name does
not represent an enumeration type.
Creates and returns an enumeration constant for the specified enumeration type with the specified name .