### Question:
BaseRdbmsProvider implements DBRdbmsProvider { @Nullable @Override public <I> I getSpecificService(@NotNull final Class<I> serviceClass, @NotNull final String serviceName) throws ClassCastException { return myIntermediateProvider.getSpecificService(serviceClass, serviceName); } BaseRdbmsProvider(@NotNull final PrimeIntermediateRdbmsProvider primeIntermediateProvider);  BaseRdbmsProvider(@NotNull final IntegralIntermediateRdbmsProvider integralIntermediateProvider); @NotNull @Override Rdbms rdbms(); @NotNull @Override Pattern connectionStringPattern(); @NotNull @Override BaseFacade openFacade(@NotNull final String connectionString,
                               @Nullable final Properties connectionProperties,
                               final int connectionsLimit,
                               final boolean connect); @Nullable @Override I getSpecificService(@NotNull final Class<I> serviceClass,
                                  @NotNull final String serviceName);  }### Answer:
@Test public void get_intermediate_service() { final BaseRdbmsProvider provider = new BaseRdbmsProvider(ourUnknownDatabaseProvider); final IntegralIntermediateRdbmsProvider intermediateRdbmsProvider = provider.getSpecificService( IntegralIntermediateRdbmsProvider.class, ImplementationAccessibleService.Names.INTERMEDIATE_SERVICE); assertThat(intermediateRdbmsProvider).isSameAs(ourUnknownDatabaseProvider); }