@Override
    public List<RebalanceProtocol> supportedProtocols() {
        final List<RebalanceProtocol> supportedProtocols = new ArrayList<>();
        supportedProtocols.add(RebalanceProtocol.EAGER);
        if (rebalanceProtocol == RebalanceProtocol.COOPERATIVE) {
            supportedProtocols.add(rebalanceProtocol);
        }
        return supportedProtocols;
    }
We need to have the PartitionAssignor and its StreamThread to be mutually accessible since the former needs
latter's cached metadata while sending subscriptions, and the latter needs former's returned assignment when
adding tasks.

@throws KafkaException if the stream thread is not specified
streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamsPartitionAssignor.java