<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>comment</key>
	<string>Symbol pattern : [a-zA-Z+!\-_?0-9*~#@'`/.$=]</string>
	<key>fileTypes</key>
	<array>
		<string>clj</string>
	</array>
	<key>foldingStartMarker</key>
	<string>(?x)^ [ \t]* \(
	  (?&lt;par&gt;
	    ( [^()\n]++ | \( \g&lt;par&gt; \)? )*+
	  )
	$</string>
	<key>foldingStopMarker</key>
	<string>^\s*$</string>
	<key>keyEquivalent</key>
	<string>^~C</string>
	<key>name</key>
	<string>Clojure</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>include</key>
			<string>#comment</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#function</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#function_multi_method</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#macro</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#namespace</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#sexpr</string>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>all</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#function</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_multi_method</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#lambda</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#macro</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#expr</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#sexpr</string>
				</dict>
			</array>
		</dict>
		<key>binding</key>
		<dict>
			<key>comment</key>
			<string>consume bindings to the end, dual recursive with binding_exp</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\[</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.vector.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding.vector.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?&lt;=\[)</string>
							<key>comment</key>
							<string>TODO: merge with parameters ??</string>
							<key>end</key>
							<string>\]</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.vector.end.clojure</string>
								</dict>
							</dict>
							<key>name</key>
							<string>meta.parameters.vector.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#comment</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#metadata</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters_variable</string>
								</dict>
								<dict>
									<key>match</key>
									<string>\&amp;</string>
									<key>name</key>
									<string>keyword.operator.varargs.clojure</string>
								</dict>
								<dict>
									<key>match</key>
									<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
									<key>name</key>
									<string>keyword.operator.symbolargs.clojure</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters_map</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding_exp</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>\{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.map.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding.map.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?&lt;=\{)</string>
							<key>comment</key>
							<string>TODO: merge with map ??</string>
							<key>end</key>
							<string>\}</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.map.end.clojure</string>
								</dict>
							</dict>
							<key>name</key>
							<string>meta.function.parameters.map.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#comment</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#metadata</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters_variable</string>
								</dict>
								<dict>
									<key>match</key>
									<string>(:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
									<key>name</key>
									<string>keyword.operator.symbolargs.clojure</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#parameters_map</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding_exp</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:let|:when|:while)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.symbolargs.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding.symbolargs.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#binding_exp</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>comment</key>
					<string>symbol matching</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding.symbole.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>variable.parameter.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#keyword</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#operator</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#number</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\])</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#binding_exp</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>[^\s]</string>
					<key>end</key>
					<string>[^\]]</string>
					<key>name</key>
					<string>invalid.illegal.bindings.clojure</string>
				</dict>
			</array>
		</dict>
		<key>binding_exp</key>
		<dict>
			<key>comment</key>
			<string>consume bindings to the end, dual recursive with binding</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#operator_special</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(\(\)|{}|\[\]|#{})</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>constant.language.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.constant.language.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=#?\()</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.sexp.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=#?\()</string>
							<key>end</key>
							<string>(?&lt;=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#function</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#function_multi_method</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#lambda</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#macro</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#sexpr</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(\[)</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.vector.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?&lt;=\[)</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.vector.begin.clojure</string>
								</dict>
							</dict>
							<key>comment</key>
							<string>TODO: merge with vector</string>
							<key>end</key>
							<string>\]</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.vector.end.clojure</string>
								</dict>
							</dict>
							<key>name</key>
							<string>meta.expression.vector.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(\{)</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.map.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?&lt;=\{)</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.map.begin.clojure</string>
								</dict>
							</dict>
							<key>comment</key>
							<string>TODO: merge with map</string>
							<key>end</key>
							<string>}</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.map.end.clojure</string>
								</dict>
							</dict>
							<key>name</key>
							<string>meta.expression.map.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=#\{)</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.set.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#set</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=")|(?=\\)|(?=\:)|(?=\#")</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.string.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#string</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>comment</key>
					<string>symbol matching</string>
					<key>end</key>
					<string>(?=\])</string>
					<key>name</key>
					<string>meta.structure.binding_exp.symbole.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#keyword</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#operator</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#number</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\])</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#binding</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>[^\s]</string>
					<key>end</key>
					<string>[^\]]</string>
					<key>name</key>
					<string>invalid.illegal.bindings.clojure</string>
				</dict>
			</array>
		</dict>
		<key>bindings_form</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>comment</key>
			<string>bindings followed by all</string>
			<key>end</key>
			<string>(?=\))</string>
			<key>name</key>
			<string>meta.structure.bindings.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\[)</string>
					<key>end</key>
					<string>\]</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#binding</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\])</string>
					<key>end</key>
					<string>(?=\))</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>comment</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(;;).*(;;)$\n?</string>
					<key>name</key>
					<string>comment.line.semicolon.double.banner.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(;;).*$\n?</string>
					<key>name</key>
					<string>comment.line.semicolon.double.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>^(;).*$\n?</string>
					<key>name</key>
					<string>comment.line.semicolon.start.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(;).*$\n?</string>
					<key>name</key>
					<string>comment.line.semicolon.clojure</string>
				</dict>
			</array>
		</dict>
		<key>expr</key>
		<dict>
			<key>name</key>
			<string>meta.expr.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#keyword</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#vector</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#map</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#set</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#number</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
			</array>
		</dict>
		<key>function</key>
		<dict>
			<key>begin</key>
			<string>\(\s*(defn\-?)\s</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.function.type.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.function.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.function.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\s*</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_name</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_body_comment</string>
				</dict>
			</array>
		</dict>
		<key>function_body</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\(\s*(?=\[)</string>
					<key>end</key>
					<string>\)</string>
					<key>name</key>
					<string>meta.function.body.code.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#parameters_body</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=\[)</string>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.body.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#parameters_body</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>function_body_comment</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>string.quoted.double.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>string.quoted.double.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.docstring.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#string_escape</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>\{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\}</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>meta.metadata.map.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#metadata_patterns</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_body</string>
				</dict>
			</array>
		</dict>
		<key>function_multi_method</key>
		<dict>
			<key>begin</key>
			<string>\(\s*(defmethod\-?)\s+</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.function.type.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.function.multi_method.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>end</key>
					<string>(?=\))</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>meta.function.multi_method.name.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#function_name</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#comment</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#metadata</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#operator_special</string>
								</dict>
								<dict>
									<key>begin</key>
									<string>(\(\)|{}|\[\]|#{})</string>
									<key>beginCaptures</key>
									<dict>
										<key>1</key>
										<dict>
											<key>name</key>
											<string>constant.language.clojure</string>
										</dict>
									</dict>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.constant.language.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#parameters_body</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?=#?\()</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.sexp.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?=#?\()</string>
											<key>end</key>
											<string>(?&lt;=\))</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#function</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#function_multi_method</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#lambda</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#macro</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#sexpr</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>include</key>
											<string>#parameters_body</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(\[)</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.vector.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?&lt;=\[)</string>
											<key>beginCaptures</key>
											<dict>
												<key>0</key>
												<dict>
													<key>name</key>
													<string>punctuation.definition.vector.begin.clojure</string>
												</dict>
											</dict>
											<key>comment</key>
											<string>TODO: merge with vector</string>
											<key>end</key>
											<string>(\])</string>
											<key>endCaptures</key>
											<dict>
												<key>1</key>
												<dict>
													<key>name</key>
													<string>punctuation.definition.vector.end.clojure</string>
												</dict>
											</dict>
											<key>name</key>
											<string>meta.expression.vector.clojure</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#all</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>begin</key>
											<string>(?&lt;=\])\s*</string>
											<key>end</key>
											<string>(?=\))</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#parameters_body</string>
												</dict>
											</array>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(\{)</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.map.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?&lt;=\{)</string>
											<key>beginCaptures</key>
											<dict>
												<key>0</key>
												<dict>
													<key>name</key>
													<string>punctuation.definition.map.begin.clojure</string>
												</dict>
											</dict>
											<key>comment</key>
											<string>TODO: merge with map</string>
											<key>end</key>
											<string>}</string>
											<key>endCaptures</key>
											<dict>
												<key>0</key>
												<dict>
													<key>name</key>
													<string>punctuation.definition.map.end.clojure</string>
												</dict>
											</dict>
											<key>name</key>
											<string>meta.expression.map.clojure</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#all</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>include</key>
											<string>#parameters_body</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?=#\{)</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.set.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#set</string>
										</dict>
										<dict>
											<key>include</key>
											<string>#parameters_body</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?=")|(?=\\)|(?=\:)|(?=\#")</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.string.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#string</string>
										</dict>
										<dict>
											<key>include</key>
											<string>#parameters_body</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
									<key>comment</key>
									<string>symbol matching</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>name</key>
									<string>meta.structure.multi_method_exp.symbole.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
											<key>end</key>
											<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#symbol_java_inherited_class</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#keyword</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#operator</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#number</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#symbol</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>begin</key>
											<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
											<key>end</key>
											<string>(?=\))</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#parameters_body</string>
												</dict>
											</array>
										</dict>
									</array>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>comment</key>
					<string>Need to match a single expression like binding-exp</string>
				</dict>
			</array>
		</dict>
		<key>function_name</key>
		<dict>
			<key>begin</key>
			<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
			<key>comment</key>
			<string>symbol matching</string>
			<key>end</key>
			<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
			<key>name</key>
			<string>entity.name.function.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#keyword</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#operator</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>-(?=[a-zA-Z+!\-_?*~#@'`/.$=])</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.prefix.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
			</array>
		</dict>
		<key>genclass_parameters</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#gencommon_parameters</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:extends)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>meta.other.genclass.extends.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_inherited_class</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:implements)\s+(\[)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\]</string>
					<key>name</key>
					<string>meta.other.genclass.implements.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_inherited_class</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:constructors)\s+(\{)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\}</string>
					<key>name</key>
					<string>meta.other.genclass.constructors.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>\[</string>
							<key>end</key>
							<string>\]</string>
							<key>name</key>
							<string>meta.other.genclass.constructor.signature.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>begin</key>
									<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
									<key>comment</key>
									<string>TODO: make a rule java Class (storage)</string>
									<key>end</key>
									<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
									<key>name</key>
									<string>storage.type.java.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#symbol</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:exposes)\s+(\{)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\}</string>
					<key>name</key>
					<string>meta.other.genclass.exposes.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>\{</string>
							<key>end</key>
							<string>\}</string>
							<key>name</key>
							<string>meta.other.genclass.exposes.get_set.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>match</key>
									<string>:(get|set)</string>
									<key>name</key>
									<string>support.other.keyword.genclass.clojure</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>:(init|main|factory|state|prefix|load-impl-ns|implements|constructors|exposes|impl-ns|exposes-methods|methods)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>gencommon_parameters</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:name)\s+(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>meta.other.genclass.name.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>entity.name.namespace.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:methods)\s+(\[)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\]</string>
					<key>name</key>
					<string>meta.other.genclass.methods.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>\[</string>
							<key>end</key>
							<string>\]</string>
							<key>name</key>
							<string>meta.other.genclass.method.signature.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>begin</key>
									<string>\[</string>
									<key>end</key>
									<string>\]</string>
									<key>name</key>
									<string>meta.other.genclass.method.args.signature.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
											<key>comment</key>
											<string>TODO: make a rule java Class (storage)</string>
											<key>end</key>
											<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
											<key>name</key>
											<string>storage.type.java.clojure</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#symbol</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>include</key>
											<string>#all</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=]+\s*])</string>
									<key>end</key>
									<string>.|$</string>
									<key>name</key>
									<string>storage.type.java.genclass.return_type.clojure</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#symbol</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>geninterface_parameters</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#gencommon_parameters</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(:extends)\s+(\[)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\]</string>
					<key>name</key>
					<string>meta.other.genclass.implements.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_inherited_class</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>keyword</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b((if-not|if|cond|do|let|loop|recur|throw|try|catch|finally|new|trampoline)\b|(set!|swap!|compare-and-set!))(?![*+!_?\-])</string>
					<key>name</key>
					<string>keyword.control.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(monitor-enter|monitor-exit|assoc|touch|drop|take|concat|prn|into|cons|first|flatten|rest|frest|rrest|second|lazy-cat|lazy-cons|conj|await|range|iterate)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>keyword.other.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(str|print(ln)?|eval|def|defmacro|defn|quote|var|fn|defmulti|defmethod|map|list|hash-map|vector|agent|declare|intern|macroexpand|macroexpand-1)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>storage.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(-&gt;|\.\.|amap|and|areduce|assert|binding|comment|cond|definline|(def[a-z\-]*)|defmatch|defmethod|defmulti|defn|defn-|defonce|defstruct|delay|doc|doseq|dosync|dotimes|doto|fn|for|if-let|lazy-cons|let|locking|loop|memfn|ns|or|prefer-method|proxy-super|proxy|refer-clojure|remove-method|sync|time|when-first|when-let|when-not|when|while|with-in-str|with-local-vars|with-open|with-out-str|with-precision|memoize)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.function.match.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(rational|associative|branch|class|coll|contains|decimal|delay|distinct|empty|end|even|every|false|float|fn|identical|instance|integer|isa|keyword|list|map|neg|nil|not-any|not-every|number|odd|pos|ratio|reversible|seq|sequential|set|sorted|special-symbol|string|symbol|true|var|zero|vector|ifn)(\?)(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.function.tester.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
						<key>4</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(not(=)|list(\*)|io(!))(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.function.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(zipper|zipmap|xml-zip|xml-seq|with-meta|vector-zip|vector|vec|var-set|var-get|vals|val|use|update-proxy|update-in|up|union|underive|unchecked-subtract|unchecked-negate|unchecked-multiply|unchecked-inc|unchecked-divide|unchecked-dec|unchecked-add|tree-seq|to-array-2d|to-array|test|take-while|take-nth|symbol|supers|subvec|subseq|subs|struct-map|struct|str|split-with|split-at|sorted-set|sorted-map-by|sorted-map|sort-by|sort|some|slurp|shutdown-agents|short|set-validator|set|seque|seq-zip|seq|send-off|send|select-keys|select|rsubseq|rseq|root|rights|right|rfirst|reverse|resultset-seq|resolve|require|replicate|replace|repeatedly|repeat|rename-keys|rename|remove-ns|remove|rem|refer|ref-set|ref|reduce|read-string|read-line|read|re-seq|re-pattern|re-matches|re-matcher|re-groups|re-find|rationalize|rand-int|rand|quot|pvec|psummary|psort|proxy-mappings|project|prn-str|println-str|println|printf|print-str|print|preduce|pr-str|pr|pop|pmin|pmax|pmap|pfilter-nils|pfilter-dupes|peek|pdistinct|path|partition|partial|parse|parents|par|pany|num|nthrest|nth|ns-unmap|ns-unalias|ns-resolve|ns-refers|ns-publics|ns-name|ns-map|ns-interns|ns-imports|ns-aliases|not=|not-empty|not|node|next|newline|namespace|name|min-key|min|meta|merge-with|merge|max-key|max|matchexpand-1|matchexpand|mapcat|map-invert|map|make-node|make-hierarchy|make-array|long-array|long|loaded-libs|load-string|load-reader|load-file|load|list*|list|line-seq|lefts|left|last|keyword|keys|key|join|iterator-seq|into-array|intersection|interpose|interleave|int-array|int|inspect-tree|inspect-table|insert-right|insert-left|insert-child|index|inc|in-ns|import|identity|hash-set|hash-map|hash|get-validator|get-proxy-class|get-in|get|gensym|gen-class|gen-interface|gen-and-save-class|gen-and-load-class|format|force|fnseq|flush|float-array|float|find-var|find-ns|find-doc|find|filter|file-seq|ffirst|eval|enumeration-seq|ensure|empty|edit|drop-while|drop-last|down|double-array|double|dorun|doall|distinct|dissoc|disj|difference|descendants|derive|deref|dec|cycle|create-struct|create-ns|count|construct-proxy|constantly|conj|complement|compare|comparator|comp|commute|clojure.set|clojure.parallel|clojure.inspector|clear-agent-errors|class|children|char|cast|cache-seq|byte|butlast|boolean|bit-xor|bit-test|bit-shift-right|bit-shift-left|bit-set|bit-or|bit-not|bit-flip|bit-clear|bit-and-not|bit-and|bigint|bigdec|bean|bases|await-for|assoc-in|aset-short|aset-long|aset-int|aset-float|aset-double|aset-char|aset-byte|aset-boolean|aset|array-map|apply|append-child|ancestors|alter-var-root|alter|all-ns|alias|alength|aget|agent-errors|agent|add-classpath|aclone|accessor|compile|longs|doubles|ints|floats|atom)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.function.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b(true|false|nil)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>constant.language.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\(\)|{}|\[\]|#{})</string>
					<key>name</key>
					<string>constant.language.clojure</string>
				</dict>
				<dict>
					<key>comment</key>
					<string>TODO : clean this ?</string>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b:(private|doc|test|tag)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>storage.modifier.clojure</string>
				</dict>
				<dict>
					<key>comment</key>
					<string>TODO : clean this ?</string>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\b:(file|line|name|ns|match|argslist)\b(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.variable.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![*+!_?\-])\*(agent|allow-unresolved-vars|command-line-args|compile-files|compile-path|err|file|flush-on-newline|in|macro-meta|math-context|ns|out|print-dup|print-length|print-level|print-meta|print-readably|proxy-classes|use-context-classloader|warn-on-reflection)\*(?![*+!_?\-])</string>
					<key>name</key>
					<string>support.variable.global.clojure</string>
				</dict>
			</array>
		</dict>
		<key>lambda</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\(\s*(fn)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.function.type.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\)</string>
					<key>name</key>
					<string>meta.function.lambda.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#comment</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#function_name</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#function_body</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(#)\(</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.function.type.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\)</string>
					<key>name</key>
					<string>meta.function.lambda.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#sexpr_special</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>macro</key>
		<dict>
			<key>begin</key>
			<string>\(\s*(\b(defmacro\-?))\s+</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.function.type.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.function.macro.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\s*</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_name</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function_body_comment</string>
				</dict>
			</array>
		</dict>
		<key>map</key>
		<dict>
			<key>begin</key>
			<string>{(?!})</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.map.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;!{)}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.map.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.expression.map.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>metadata</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>#?\^{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>}</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>punctuation.metadata.map.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#metadata_patterns</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>#?\^"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.metadata.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>comment.punctuation.definition.metadata.begin.clojure</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>storage.type.java.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(#?\^)([a-zA-Z+!\-_?0-9*/.$=]+)</string>
					<key>name</key>
					<string>punctuation.metadata.class.clojure</string>
				</dict>
			</array>
		</dict>
		<key>metadata_patterns</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(:tag|:doc|:arglists|:private|:macro|:name|:ns|:inline-arities|:inline|:line|:file)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>support.other.keyword.namespace.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=:tag)\s+([a-zA-Z+!\-_?0-9*/.$=]+)</string>
					<key>name</key>
					<string>storage.type.java.clojure</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=:doc)\s+"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>string.quoted.double.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>string.quoted.double.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.docstring.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#string_escape</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>namespace</key>
		<dict>
			<key>begin</key>
			<string>\(\s*(ns)\b</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>support.function.namespace.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.function.namespace.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>entity.name.namespace.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#namespace_body</string>
				</dict>
			</array>
		</dict>
		<key>namespace_body</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(:refer-clojure|:require|:use|:import|:load|:exclude|:as|:only)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>support.other.keyword.namespace.clojure</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\(\s*(:gen-class)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.other.keyword.genclass.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\)</string>
					<key>name</key>
					<string>meta.function.genclass_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#genclass_parameters</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\(</string>
					<key>end</key>
					<string>\)</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#namespace_body</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>\[</string>
					<key>end</key>
					<string>\]</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#namespace_body</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>number</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.arithmetic.ratio.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(-|\+)?\b[0-9]+(/)[0-9]+\b</string>
					<key>name</key>
					<string>constant.numeric.float.ratio.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>[-+]?\b[0-9]+((\.[0-9]+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))?\b</string>
					<key>name</key>
					<string>constant.numeric.float.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>[-+]?\b[0-9]+(((\.[0-9])?+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))[M]?\b</string>
					<key>name</key>
					<string>constant.numeric.big_decimal.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.arithmetic.octal.clojure</string>
						</dict>
						<key>4</key>
						<dict>
							<key>name</key>
							<string>invalid.illegal.integer.octal.clojure</string>
						</dict>
						<key>5</key>
						<dict>
							<key>name</key>
							<string>invalid.illegal.integer.octal.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(-|\+)?\b(0)([0-7]+|([89]))([0-9]*)\b</string>
					<key>name</key>
					<string>constant.numeric.integer.octal.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(-|\+)?\b[0-9]+\b</string>
					<key>name</key>
					<string>constant.numeric.integer.clojure</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.arithmetic.hexa.clojure</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(-|\+)?\b(0[xX])[0-9A-Fa-f]+\b</string>
					<key>name</key>
					<string>constant.numeric.integer.hexa.clojure</string>
				</dict>
			</array>
		</dict>
		<key>operator</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(?&lt;![a-zA-Z0-9*+!_?\-])(\*|/|\&lt;|\&lt;=|=|==|\&gt;|\&gt;=|-\&gt;)(?![a-zA-Z0-9*+!_?\-])</string>
					<key>name</key>
					<string>keyword.operator.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![a-zA-Z0-9*+!_?\-])(-|\+)(?![a-zA-Z0-9*+!_?\-])</string>
					<key>name</key>
					<string>keyword.operator.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![a-zA-Z0-9*+!_?\-])(\.|\.\.)(?![a-zA-Z0-9*+!_?\-])</string>
					<key>name</key>
					<string>keyword.operator.class.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>%(\d+|&amp;)?</string>
					<key>name</key>
					<string>variable.parameter.literal.clojure</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#operator_special</string>
				</dict>
			</array>
		</dict>
		<key>operator_special</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>`|~@|~</string>
					<key>name</key>
					<string>keyword.control.operator.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>#'|@</string>
					<key>name</key>
					<string>storage.type.function.type.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>'</string>
					<key>name</key>
					<string>constant.other.quote</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\^</string>
					<key>name</key>
					<string>constant.other.metadata.read.clojure</string>
				</dict>
			</array>
		</dict>
		<key>parameters</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.parameters.vector.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\&amp;</string>
					<key>name</key>
					<string>keyword.operator.varargs.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>keyword.operator.symbolargs.clojure</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters_variable</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters_map</string>
				</dict>
			</array>
		</dict>
		<key>parameters_body</key>
		<dict>
			<key>name</key>
			<string>meta.function.body</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#parameters_function</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\])</string>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.body.code.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>parameters_function</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.function.parameters.vector.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\&amp;</string>
					<key>name</key>
					<string>keyword.operator.varargs.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>keyword.operator.symbolargs.clojure</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#metadata</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters_variable</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters_map</string>
				</dict>
			</array>
		</dict>
		<key>parameters_map</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.map.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.map.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.function.parameters.map.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#parameters_variable</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>keyword.operator.symbolargs.clojure</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameters_map</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>parameters_variable</key>
		<dict>
			<key>begin</key>
			<string>(?=[a-zA-Z+!\-_?0-9*~@'`/.$=])</string>
			<key>comment</key>
			<string>symbol matching TODO:operator number =&gt; error ?</string>
			<key>end</key>
			<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
			<key>name</key>
			<string>variable.parameter.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#keyword</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#number</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
			</array>
		</dict>
		<key>set</key>
		<dict>
			<key>begin</key>
			<string>#{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.set.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.set.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.expression.set.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>sexpr</key>
		<dict>
			<key>begin</key>
			<string>\((?!\))</string>
			<key>end</key>
			<string>(?&lt;!\()\)</string>
			<key>name</key>
			<string>meta.sexpr.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#sexpr_special</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>sexpr_special</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(let|loop|doseq|dotimes|binding|for|if-let|when-let|with-local-vars|with-open)\s+(?=\[)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.let_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#bindings_form</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(def|declare|defstruct|defonce|defmulti)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.variable.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.def_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#metadata</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\s*</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#function_name</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?&lt;=$|.)</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(prefer-method)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.variable.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.def_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#metadata</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\s*</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#function_name</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?&lt;=$|.)</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol_java_inherited_class</string>
								</dict>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(instance(\?))\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.function.tester.clojure</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.isInstance_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_class_form_body</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(cast)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.function.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.cast_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_class_form_body</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*((new)\s+|(?=[a-zA-Z][a-zA-Z.]*\.(\s+|$|\))))</string>
					<key>beginCaptures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.new_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>storage.type.java.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*((\.\.?)\s+(?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?))</string>
					<key>beginCaptures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.member_access_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>storage.type.java.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(gen-class)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.function.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.genclass_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#genclass_parameters</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(gen-interface)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>support.function.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.geninterface_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#geninterface_parameters</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*((catch)\s+)</string>
					<key>beginCaptures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.catch_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol_java_class_form_body</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>\s+(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>variable.parameter.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(((set|swap|compare-and-set)(\!))\s+)</string>
					<key>beginCaptures</key>
					<dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>keyword.other.mark.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.setvar_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>name</key>
							<string>variable.parameter.clojure</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#symbol</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#all</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\()\s*(proxy)\s+</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.control.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\))</string>
					<key>name</key>
					<string>meta.function.proxy_form.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#comment</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?=\[)</string>
							<key>end</key>
							<string>(?=\))</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#comment</string>
								</dict>
								<dict>
									<key>begin</key>
									<string>\[</string>
									<key>end</key>
									<string>\]</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>begin</key>
											<string>(?=([a-z]+\.)*[A-Z][a-zA-Z]*)</string>
											<key>end</key>
											<string>(?![a-zA-Z.])</string>
											<key>name</key>
											<string>entity.other.inherited-class.java.proxy.clojure</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#symbol</string>
												</dict>
											</array>
										</dict>
										<dict>
											<key>include</key>
											<string>#all</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>begin</key>
									<string>(?&lt;=\])</string>
									<key>end</key>
									<string>(?=\))</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#comment</string>
										</dict>
										<dict>
											<key>begin</key>
											<string>(?=\[)</string>
											<key>end</key>
											<string>(?=\))</string>
											<key>name</key>
											<string>meta.function.body.proxy_form.clojure</string>
											<key>patterns</key>
											<array>
												<dict>
													<key>include</key>
													<string>#comment</string>
												</dict>
												<dict>
													<key>include</key>
													<string>#parameters</string>
												</dict>
												<dict>
													<key>begin</key>
													<string>(?&lt;=\])</string>
													<key>end</key>
													<string>(?=\))</string>
													<key>patterns</key>
													<array>
														<dict>
															<key>include</key>
															<string>#comment</string>
														</dict>
														<dict>
															<key>begin</key>
															<string>\(\s*</string>
															<key>end</key>
															<string>\)</string>
															<key>name</key>
															<string>meta.function.proxy.method.clojure</string>
															<key>patterns</key>
															<array>
																<dict>
																	<key>include</key>
																	<string>#comment</string>
																</dict>
																<dict>
																	<key>include</key>
																	<string>#function_name</string>
																</dict>
																<dict>
																	<key>include</key>
																	<string>#function_body_comment</string>
																</dict>
															</array>
														</dict>
													</array>
												</dict>
											</array>
										</dict>
									</array>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>string</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.quoted.double.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#string_escape</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>\\(u[0-9a-fA-F]{4}|newline|tab|space|backspace|formfeed|return|[^\s])</string>
					<key>name</key>
					<string>constant.character.escape.clojure</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(\:{1,2})(?=[a-zA-Z+!\-_?0-9*/.$=])</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.symbole.clojure</string>
						</dict>
					</dict>
					<key>comment</key>
					<string>. is OK in symbol ?</string>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>name</key>
					<string>constant.string.symbole.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>#"</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.begin.clojure</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.clojure</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.regexp.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>source.regexp.oniguruma</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>string_escape</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>invalid.illegal.escape.string.clojure</string>
				</dict>
			</dict>
			<key>match</key>
			<string>\\(u[0-9a-fA-F]{4}|b|t|n|f|r|"|'|\\|[0-3]?[0-7]{1,2}|(.))</string>
			<key>name</key>
			<string>constant.character.escape.clojure</string>
		</dict>
		<key>symbol</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b[A-Z_]{2,}\b</string>
					<key>name</key>
					<string>constant.other.java.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;![a-zA-Z+!\-_?0-9*])\*[a-z\-]{2,}\*(?![a-zA-Z+!\-_?0-9*])</string>
					<key>name</key>
					<string>source.symbol.global.clojure</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*=])</string>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*=])</string>
					<key>name</key>
					<string>source.symbol.clojure</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>[0-9]</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*=])</string>
							<key>name</key>
							<string>invalid.illegal.symbol.clojure</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>[a-zA-Z]</string>
							<key>end</key>
							<string>([+!\-_?*=#])?(?![a-zA-Z+!\-_?0-9*=])</string>
							<key>endCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>keyword.other.mark.clojure</string>
								</dict>
							</dict>
						</dict>
						<dict>
							<key>begin</key>
							<string>[+!\-_?*=]</string>
							<key>end</key>
							<string>(?![a-zA-Z+!\-_?0-9*=])</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=[a-zA-Z+!\-_?0-9*])\.(?=[a-zA-Z+!\-_?0-9*])</string>
					<key>name</key>
					<string>keyword.operator.classpath.clojure</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=[a-zA-Z+!\-_?0-9*])(/|\$)(?=[a-zA-Z+!\-_?0-9*])</string>
					<key>name</key>
					<string>keyword.operator.qualified.clojure</string>
				</dict>
			</array>
		</dict>
		<key>symbol_java_class</key>
		<dict>
			<key>begin</key>
			<string>(?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)</string>
			<key>comment</key>
			<string>TODO : use it</string>
			<key>end</key>
			<string>(?![a-zA-Z.$])</string>
			<key>name</key>
			<string>storage.type.java.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
			</array>
		</dict>
		<key>symbol_java_class_form_body</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>end</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#symbol_java_inherited_class</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
					<key>end</key>
					<string>(?=\))</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#all</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
		<key>symbol_java_inherited_class</key>
		<dict>
			<key>begin</key>
			<string>(?=([a-z]+\.)*[A-Z][a-zA-Z]*(\$[A-Z][a-zA-Z]*)?)</string>
			<key>end</key>
			<string>(?![a-zA-Z.$])</string>
			<key>name</key>
			<string>entity.other.inherited-class.java.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#symbol</string>
				</dict>
			</array>
		</dict>
		<key>vector</key>
		<dict>
			<key>begin</key>
			<string>\[(?!\])</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.begin.clojure</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;!\[)\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.vector.end.clojure</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.expression.vector.clojure</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#all</string>
				</dict>
			</array>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.clojure</string>
	<key>uuid</key>
	<string>6A87759F-F746-4E84-B788-965B46363202</string>
</dict>
</plist>
