private static function registerMember(MultitonInterface $member)
    {
        $reflector = new ReflectionObject($member);
        $parentClass = $reflector->getParentClass();

        if (!$parentClass->isAbstract()) {
            throw new ExtendsConcreteException(
                get_class($member),
                $parentClass->getName()
            );
        }

        self::$members[get_called_class()][$member->key()] = $member;
    }