Craig,
First, it's worth pointing out that this is *not* public API, which is why the signature is changing without any warning. In general you should not rely on internal APIs like this. If you're willing to accept the burden of having to update your code with every new release you want to compile against it can be ok, but we don't even guarantee the same functionality will be exposed in each release. In fact, the API you're referring to has changed yet again on trunk since the version you're referring to.
That said, if you're going to rely on this, Optional types just need to be checked for if they are empty or not and then use their value, e.g. something like
Optional<List<AdminClient.ConsumerSummary>> groupSummariesOptional = adminClient.describeConsumerGroup(groupId);
if (adminClient.isEmpty()) {
// there's no value, handle this error
} else {
List<AdminClient.ConsumerSummary> groupSummaries = groupSummariesOptional.get();
// now you know the value exists, use groupSummaries as previously
}
-Ewen