code: @SuppressWarnings( "unchecked" )
      public <T> T getService( final Class<T> serviceType,
                               final long timeoutInMillis )
      {
          return (T) Proxy.newProxyInstance(
              getClass().getClassLoader(),
              new Class<?>[]{ serviceType },
              new InvocationHandler()
              {
                  /**
                   * {@inheritDoc}
                   * Delegates the call to remote bundle context.
                   */
                  public Object invoke( final Object proxy,
                                        final Method method,
                                        final Object[] params )
                      throws Throwable
                  {
                      try
                      {
                          return getRemoteBundleContext().remoteCall(
                              method.getDeclaringClass(),
                              method.getName(),
                              method.getParameterTypes(),
                              timeoutInMillis,
                              params
                          );
                      }
                      catch( InvocationTargetException e )
                      {
                          throw e.getCause();
                      }
                      catch( RemoteException e )
                      {
                          throw new TestContainerException( "Remote exception", e );
                      }
                      catch( Exception e )
                      {
                          throw new TestContainerException( "Invocation exception", e );
                      }
                  }
              }
          );
      }
docs: {@inheritDoc}
  Returns a dynamic proxy in place of the actual service, forwarding the calls via the remote bundle context.