protected function rethrowExceptions(callable $callable) {
        try {
            return $callable();
        } catch (ImplementationNotFoundException $ex) {
            throw new ImplementationNotFoundException($ex->getMessage());
        } catch (TypeMismatchException $ex) {
            throw new TypeMismatchException($ex->getMessage());
        } catch (UnresolveableArgumentException $ex) {
            throw new UnresolveableArgumentException($ex->getMessage());
        } catch (ValueNotFoundException $ex) {
            throw new ValueNotFoundException($ex->getMessage());
        } catch (InvalidCallableFormatException $ex) {
            throw new InvalidCallableFormatException($ex->getMessage());
        } catch (MissingDefinitionIdentifierException $ex) {
            throw new MissingDefinitionIdentifierException($ex->getMessage());
        } catch (MissingDefinitionValueException $ex) {
            throw new MissingDefinitionValueException($ex->getMessage());
        } catch (ClassNotFoundException $ex) {
            throw new ClassNotFoundException($ex->getMessage());
        }
    }