// there's relay now
  private void attachToBufferOrClose() {
    if (DEBUG_LIFECYCLE) logger.warn("{} attachToBufferOrClose()", fullName);
    relay.addRelayConnectionHandler(this); // connect/disconnect watcher

    buffer = relay.getBufferByFullName(fullName);
    if (buffer == null) {
      // no buffer? it might happen if:
      //  * the buffer was closed in weechat. if so, close here as well
      //    (post so that closing doesn't get executed on current loop to avoid issues)
      //  * we are not yet connected, e.g., after service shutdown. if so,
      //    wait for onBuffersListed event
      if (relay.isConnection(RelayService.BUFFERS_LISTED)) onBufferClosed();
      return;
    }
    shortName = buffer.shortName;
    buffer.setBufferEye(
        this); // buffer watcher TODO: java.lang.NullPointerException if run in thread ?!?!

    linesAdapter = new ChatLinesAdapter(activity, buffer, uiLines);
    linesAdapter.setFont(prefs.getString(PREF_BUFFER_FONT, PREF_BUFFER_FONT_D));
    linesAdapter.readLinesFromBuffer();

    activity.runOnUiThread(
        new Runnable() {
          @Override
          public void run() {
            activity.updateCutePagerTitleStrip();
            uiLines.setAdapter(linesAdapter);
          }
        });
    maybeChangeVisibilityState();
  }
  private void attachToBuffer() {
    logger.debug("attachToBuffer()");

    buffer.setBufferEye(this);

    linesAdapter = new ChatLinesAdapter(activity, buffer, uiLines);
    linesAdapter.setFont(P.bufferFont);
    linesAdapter.readLinesFromBuffer();

    activity.runOnUiThread(
        new Runnable() {
          @Override
          public void run() {
            activity.updateCutePagerTitleStrip();
            uiLines.setAdapter(linesAdapter);
            maybeChangeHeader();
          }
        });
    maybeChangeVisibilityState();
  }