protected static function _determineImplClass(Identifier $identifier): string
    {
        switch ($identifier->typeClass()) {
            case Identifier::CLASS_UNIVERSAL:
                return self::_determineUniversalImplClass($identifier->intTag());
            case Identifier::CLASS_CONTEXT_SPECIFIC:
                return ContextSpecificType::class;
            case Identifier::CLASS_APPLICATION:
                return ApplicationType::class;
            case Identifier::CLASS_PRIVATE:
                return PrivateType::class;
        }
        throw new \UnexpectedValueException(
            sprintf("%s %d not implemented.",
                Identifier::classToName($identifier->typeClass()),
                $identifier->tag()));
    }
protected static function _determineImplClass(Identifier $identifier): string
    {
        switch ($identifier->typeClass()) {
            case Identifier::CLASS_UNIVERSAL:
                return self::_determineUniversalImplClass($identifier->intTag());
            case Identifier::CLASS_CONTEXT_SPECIFIC:
                return ContextSpecificType::class;
            case Identifier::CLASS_APPLICATION:
                return ApplicationType::class;
            case Identifier::CLASS_PRIVATE:
                return PrivateType::class;
        }
        throw new \UnexpectedValueException(
            sprintf("%s %d not implemented.",
                Identifier::classToName($identifier->typeClass()),
                $identifier->tag()));
    }
protected static function _determineImplClass ( Identifier $ identifier ) : string { switch ( $ identifier -> typeClass ( ) ) { case Identifier :: CLASS_UNIVERSAL : return self :: _determineUniversalImplClass ( $ identifier -> intTag ( ) ) ; case Identifier :: CLASS_CONTEXT_SPECIFIC : return ContextSpecificType :: class ; case Identifier :: CLASS_APPLICATION : return ApplicationType :: class ; case Identifier :: CLASS_PRIVATE : return PrivateType :: class ; } throw new \ UnexpectedValueException ( sprintf ( "%s %d not implemented." , Identifier :: classToName ( $ identifier -> typeClass ( ) ) , $ identifier -> tag ( ) ) ) ; }
Determine the class that implements the type.

@param Identifier $identifier
@return string Class name
Determine the class that implements the type .