protected ClusterBase(ElasticsearchVersion version, int instanceCount = 1, string clusterName = null, string[] additionalSettings = null)
        {
            var n = new NodeConfiguration(version, clusterName, null);

            this.NodeConfiguration = n;

            var nodeSettings = n.CreateSettings(additionalSettings);

            this.NodeSettings = nodeSettings;
            var fs    = this.NodeConfiguration.FileSystem;
            var nodes = Enumerable.Range(9200, instanceCount)
                        .Select(p => new ElasticsearchNode(fs.Binary, n.CreateSettings(nodeSettings, NodeSpecificSettings(p)))
            {
                DesiredPort = p,
                AssumeStartedOnNotEnoughMasterPing = instanceCount > 1
            })
                        .ToList();

            this.Nodes      = new ReadOnlyCollection <ElasticsearchNode>(nodes);
            this.TaskRunner = new NodeTaskRunner(this.NodeConfiguration);
        }