public IEnumerator <KVP> GetEnumerator() { if (HasValue) { yield return(new KVP(Prefix, Value)); } if (False != null) { foreach (var item in False()) { yield return(new KVP(Prefix.Append(false).Concat(item.Key), item.Value)); } } if (True != null) { foreach (var item in True()) { yield return(new KVP(Prefix.Append(true).Concat(item.Key), item.Value)); } } }