public Object sendRequest(String oid, Type type, String operation, Object[] params)
      throws Throwable {
    Object result = null;

    checkDisposed();

    ThreadId threadId = _iThreadPool.getThreadId();
    Object handle = _iThreadPool.attach(threadId);
    try {
      boolean sync;
      try {
        sync =
            _iProtocol.writeRequest(
                oid, TypeDescription.getTypeDescription(type), operation, threadId, params);
      } catch (IOException e) {
        dispose(e);
        throw (DisposedException) new DisposedException(e.toString()).initCause(e);
      }
      if (sync && Thread.currentThread() != _messageDispatcher) {
        result = _iThreadPool.enter(handle, threadId);
      }
    } finally {
      _iThreadPool.detach(handle, threadId);
      if (operation.equals("release")) release(); // kill this bridge, if this was the last proxy
    }

    if (DEBUG) System.err.println("##### " + getClass().getName() + ".sendRequest left:" + result);

    // On the wire (at least in URP), the result of queryInterface is
    // transported as an ANY, but in Java it shall be transported as a
    // direct reference to the UNO object (represented as a Java Object),
    // never boxed in a com.sun.star.uno.Any:
    if (operation.equals("queryInterface") && result instanceof Any) {
      Any a = (Any) result;
      if (a.getType().getTypeClass() == TypeClass.INTERFACE) {
        result = a.getObject();
      } else {
        result = null; // should never happen
      }
    }

    return result;
  }
  /** Redefined method returns object, that contains changed property value. */
  public void _TypeMap() {
    boolean result = false;
    try {
      Any TypeMap = (Any) oObj.getPropertyValue("TypeMap");
      String TypeName = TypeMap.getType().getTypeName();
      String expected = "com.sun.star.container.XNameAccess";
      result = TypeName.equals(expected);
      if (!result) {
        log.println("Expected Type is " + expected);
        log.println("but the returned is " + TypeName);
      }
    } catch (com.sun.star.lang.WrappedTargetException e) {
      log.println("Exception " + e.getMessage());
    } catch (com.sun.star.beans.UnknownPropertyException e) {
      log.println("Exception " + e.getMessage());
    }

    tRes.tested("TypeMap", result);
  }