public void connect(EventChannel channel, boolean useOrSemantic)
      throws AdminLimitExceeded, AlreadyConnected, TypeError {
    StructuredPushConsumerPOATie receiverTie = new StructuredPushConsumerPOATie(this);

    ConsumerAdmin _consumerAdmin = channel.default_consumer_admin();

    IntHolder _proxyIdHolder = new IntHolder();
    pushSupplier_ =
        StructuredProxyPushSupplierHelper.narrow(
            _consumerAdmin.obtain_notification_push_supplier(
                ClientType.STRUCTURED_EVENT, _proxyIdHolder));

    Assert.assertNotNull(pushSupplier_);
    Assert.assertNotNull(pushSupplier_.MyType());
    Assert.assertEquals(pushSupplier_.MyType(), ProxyType.PUSH_STRUCTURED);

    Assert.assertEquals(_consumerAdmin, pushSupplier_.MyAdmin());
    pushSupplier_.connect_structured_push_consumer(
        StructuredPushConsumerHelper.narrow(receiverTie._this(orb_)));

    connected_ = true;
  }