public static function support(array $processingTypes)
    {
        $prototypes = [];

        foreach ($processingTypes as $typeClassOrPrototype) {
            if ($typeClassOrPrototype instanceof Prototype) {
                $prototypes[] = $typeClassOrPrototype;
            } else {
                Assertion::string($typeClassOrPrototype);
                Assertion::classExists($typeClassOrPrototype);
                Assertion::implementsInterface($typeClassOrPrototype, Type::class);
                $prototypes[] = $typeClassOrPrototype::prototype();
            }
        }

        return new self($prototypes, false);
    }