src/vs/editor/contrib/snippet/browser/snippetParser.ts/TextmateSnippet/placeholderInfo
class TextmateSnippet:	get placeholderInfo() {
		if (!this._placeholders) {
			// fill in placeholders
			let all: Placeholder[] = [];
			let last: Placeholder | undefined;
			this.walk(function (candidate) {
				if (candidate instanceof Placeholder) {
					all.push(candidate);
					last = !last || last.index < candidate.index ? candidate : last;
				}
				return true;
			});
			this._placeholders = { all, last };
		}
		return this._placeholders;
	}