code: 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());
          }
      }
docs: Rethrow controlled exceptions, those that get thrown by the container
  or the resolver, to shorten the call stack and make it more readable.
  
  @param callable $callable
  
  @return mixed
  @throws ClassNotFoundException
  @throws ImplementationNotFoundException
  @throws InvalidCallableFormatException
  @throws MissingDefinitionIdentifierException
  @throws MissingDefinitionValueException
  @throws TypeMismatchException
  @throws UnresolveableArgumentException
  @throws ValueNotFoundException