final protected function throwIfInvalidAnnotation(string $classWithAnnotation, string $annotation, string $expectedClassName, string $actualClassName): void
    {
        if (!is_a($actualClassName, $expectedClassName, true)) {
            throw new Exception('On class `' . $classWithAnnotation . '` the annotation `@API\\' . $annotation . '` expects a FQCN implementing `' . $expectedClassName . '`, but instead got: ' . $actualClassName);
        }
    }
final protected function throwIfInvalidAnnotation(string $classWithAnnotation, string $annotation, string $expectedClassName, string $actualClassName): void
    {
        if (!is_a($actualClassName, $expectedClassName, true)) {
            throw new Exception('On class `' . $classWithAnnotation . '` the annotation `@API\\' . $annotation . '` expects a FQCN implementing `' . $expectedClassName . '`, but instead got: ' . $actualClassName);
        }
    }
final protected function throwIfInvalidAnnotation ( string $ classWithAnnotation , string $ annotation , string $ expectedClassName , string $ actualClassName ) : void { if ( ! is_a ( $ actualClassName , $ expectedClassName , true ) ) { throw new Exception ( 'On class `' . $ classWithAnnotation . '` the annotation `@API\\' . $ annotation . '` expects a FQCN implementing `' . $ expectedClassName . '`, but instead got: ' . $ actualClassName ) ; } }
Throw an exception if the given type does not inherit expected type

@param string $classWithAnnotation
@param string $annotation
@param string $expectedClassName
@param string $actualClassName
Throw an exception if the given type does not inherit expected type