public function filter(ServiceDefinition $input) : bool
    {
        if (empty($this->type)) {
//            var_dump('type is empty');
            return false;
        }

        // Is it the exact same class.
        // This check can be handy for non-existing classes that are still to be generated by a code-generator e.g. Storage
        if (Util::isSameFqcn($input->getClass(), $this->type)) {
            return true;
        }

        if (false === class_exists($this->type) && false === interface_exists($this->type)) {
//            var_dump('type does not exist ' . $this->type);
            return false;
        }

        if (false === class_exists($input->getClass()) && false === interface_exists($input->getClass())) {
            return false;
        }

        return is_a($input->getClass(), $this->type, true);
    }
public function filter(ServiceDefinition $input) : bool
    {
        if (empty($this->type)) {
//            var_dump('type is empty');
            return false;
        }

        // Is it the exact same class.
        // This check can be handy for non-existing classes that are still to be generated by a code-generator e.g. Storage
        if (Util::isSameFqcn($input->getClass(), $this->type)) {
            return true;
        }

        if (false === class_exists($this->type) && false === interface_exists($this->type)) {
//            var_dump('type does not exist ' . $this->type);
            return false;
        }

        if (false === class_exists($input->getClass()) && false === interface_exists($input->getClass())) {
            return false;
        }

        return is_a($input->getClass(), $this->type, true);
    }
@param ServiceDefinition $input

@return bool