class KafkaAdminClient implements Closeable {

    public Authorizer getAuthorizer() {
        if (authorizer == null) {
            ZKConfig zkConfig = new ZKConfig(new VerifiableProperties(properties));

            Map<String, Object> authorizerProps = new HashMap<>();
            authorizerProps.put(ZKConfig.ZkConnectProp(), zkConfig.zkConnect());
            authorizerProps.put(ZKConfig.ZkConnectionTimeoutMsProp(), zkConfig.zkConnectionTimeoutMs());
            authorizerProps.put(ZKConfig.ZkSessionTimeoutMsProp(), zkConfig.zkSessionTimeoutMs());
            authorizerProps.put(ZKConfig.ZkSyncTimeMsProp(), zkConfig.zkSyncTimeMs());

            try {
                Authorizer simpleAclAuthorizer = new SimpleAclAuthorizer();
                simpleAclAuthorizer.configure(authorizerProps);
                authorizer = simpleAclAuthorizer;
            } catch (ZkException | ZooKeeperClientException e) {
                throw new AdminOperationException("Unable to create authorizer", e);
            }
        }

        return authorizer;
    }

    public  KafkaAdminClient(Properties properties);

}