public string Resolve(Expression expression) { var stack = new Stack<string>(); var properties = new Stack<ElasticsearchPropertyAttribute>(); Visit(expression, stack, properties); return stack .Aggregate( new StringBuilder(), (sb, name) => (sb.Length > 0 ? sb.Append(".") : sb).Append(name)) .ToString(); }