<?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>fileTypes</key>
	<array>
		<string>groovy</string>
		<string>gvy</string>
	</array>
	<key>foldingStartMarker</key>
	<string>(\{\s*$|^\s*// \{\{\{)</string>
	<key>foldingStopMarker</key>
	<string>^\s*(\}|// \}\}\}$)</string>
	<key>keyEquivalent</key>
	<string>^~G</string>
	<key>name</key>
	<string>Groovy</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.comment.groovy</string>
				</dict>
			</dict>
			<key>match</key>
			<string>^(#!).+$\n</string>
			<key>name</key>
			<string>comment.line.hashbang.groovy</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.package.groovy</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.package.groovy</string>
				</dict>
			</dict>
			<key>match</key>
			<string>^\s*(package)\s+([^ ;]+)</string>
			<key>name</key>
			<string>meta.package.groovy</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.import.groovy</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.import.groovy</string>
				</dict>
			</dict>
			<key>match</key>
			<string>^\s*(import)\s+([^ ;$]+);?</string>
			<key>name</key>
			<string>meta.import.groovy</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#groovy</string>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>class-object</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(?x)
							\b(
								(?:[a-z]\w*\.)* # Optional package specification
								[A-Z]\w+\b # Class name
								(?:&lt;(?:[\w, ]*)&gt;)? # Optional Generics
								(?:\[\s*\])* # Optional brackets (array)
							)\b
					</string>
					<key>name</key>
					<string>storage.type.class.groovy</string>
				</dict>
			</array>
		</dict>
		<key>classes</key>
		<dict>
			<key>begin</key>
			<string>(?x)^\s*
					(?:(?:\b(?:(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s*)*) # modifier
					(class)\s+
					(\w+)\s* # identifier</string>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.access-control.groovy</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.static.groovy</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.final.groovy</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.other.groovy</string>
				</dict>
				<key>5</key>
				<dict>
					<key>name</key>
					<string>storage.type.class.groovy</string>
				</dict>
				<key>6</key>
				<dict>
					<key>name</key>
					<string>entity.name.type.class.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>$</string>
			<key>name</key>
			<string>meta.definition.class.groovy</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.extends.groovy</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>entity.other.inherited-class.groovy</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(extends)\s+([a-zA-Z0-9_\.]+(?:&lt;(?:[a-zA-Z0-9_, ])+&gt;)?)\s*</string>
					<key>name</key>
					<string>meta.definition.class.inherited.classes.groovy</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(implements)\s</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.implements.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\s*extends|$|\{)</string>
					<key>name</key>
					<string>meta.definition.class.implemented.interfaces.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>entity.other.inherited-class.interface.groovy</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.implemented.interfaces.separator.groovy</string>
								</dict>
							</dict>
							<key>match</key>
							<string>((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>comment-block</key>
		<dict>
			<key>begin</key>
			<string>/\*</string>
			<key>captures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.comment.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\*/</string>
			<key>name</key>
			<string>comment.block.groovy</string>
		</dict>
		<key>comments</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.groovy</string>
						</dict>
					</dict>
					<key>match</key>
					<string>/\*\*/</string>
					<key>name</key>
					<string>comment.block.empty.groovy</string>
				</dict>
				<dict>
					<key>include</key>
					<string>text.html.javadoc</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment-block</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.groovy</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(//).*$\n?</string>
					<key>name</key>
					<string>comment.line.double-slash.groovy</string>
				</dict>
			</array>
		</dict>
		<key>constants</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b([A-Z][A-Z0-9_]+)\b</string>
					<key>name</key>
					<string>constant.other.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(true|false|null)\b</string>
					<key>name</key>
					<string>constant.language.groovy</string>
				</dict>
			</array>
		</dict>
		<key>groovy</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#classes</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#methods</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#groovy-code</string>
				</dict>
			</array>
		</dict>
		<key>groovy-code</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#groovy-code-minus-map-keys</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#map-keys</string>
				</dict>
			</array>
		</dict>
		<key>groovy-code-minus-map-keys</key>
		<dict>
			<key>comment</key>
			<string>In some situations, maps can't be declared without enclosing []'s, 
				therefore we create a collection of everything but that</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#support-functions</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#keyword-language</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#values</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#keyword-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#storage-types</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#storage-modifiers</string>
				</dict>
			</array>
		</dict>
		<key>keyword</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#keyword-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#keyword-language</string>
				</dict>
			</array>
		</dict>
		<key>keyword-language</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(try|catch|finally|throw)\b</string>
					<key>name</key>
					<string>keyword.control.exception.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(return|break|continue|default|do|while|for|switch|if|else)\b</string>
					<key>name</key>
					<string>keyword.control.groovy</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\bcase\b</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>keyword.control.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>:</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.case-terminator.groovy</string>
						</dict>
					</dict>
					<key>name</key>
					<string>meta.case.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#groovy-code-minus-map-keys</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(new)\b</string>
					<key>name</key>
					<string>keyword.other.new.groovy</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\b(assert)\s</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.control.assert.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>$</string>
					<key>name</key>
					<string>meta.declaration.assertion.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>:</string>
							<key>name</key>
							<string>keyword.operator.assert.expression-seperator.groovy</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#groovy-code-minus-map-keys</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(throws)\b</string>
					<key>name</key>
					<string>keyword.other.throws.groovy</string>
				</dict>
			</array>
		</dict>
		<key>keyword-operator</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(as)\b</string>
					<key>name</key>
					<string>keyword.operator.as.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(is)\b</string>
					<key>name</key>
					<string>keyword.operator.is.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\?\:</string>
					<key>name</key>
					<string>keyword.operator.elvis.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\.\.</string>
					<key>name</key>
					<string>keyword.operator.range.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\-&gt;</string>
					<key>name</key>
					<string>keyword.operator.arrow.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>&lt;&lt;</string>
					<key>name</key>
					<string>keyword.operator.leftshift.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=\S)\.(?=\S)</string>
					<key>name</key>
					<string>keyword.operator.navigation.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=\S)\?\.(?=\S)</string>
					<key>name</key>
					<string>keyword.operator.safe-navigation.groovy</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\?</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.ternary.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>$</string>
					<key>name</key>
					<string>meta.evaluation.ternary.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>:</string>
							<key>name</key>
							<string>keyword.operator.ternary.expression-seperator.groovy</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#groovy-code-minus-map-keys</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>==~</string>
					<key>name</key>
					<string>keyword.operator.match.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>=~</string>
					<key>name</key>
					<string>keyword.operator.find.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(instanceof)\b</string>
					<key>name</key>
					<string>keyword.operator.instanceof.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(===|==|!=|&lt;=|&gt;=|&lt;=&gt;|&lt;&gt;|&lt;|&gt;|&lt;&lt;)</string>
					<key>name</key>
					<string>keyword.operator.comparison.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>=</string>
					<key>name</key>
					<string>keyword.operator.assignment.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\-\-|\+\+)</string>
					<key>name</key>
					<string>keyword.operator.increment-decrement.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\-|\+|\*|\/|%)</string>
					<key>name</key>
					<string>keyword.operator.arithmetic.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(!|&amp;&amp;|\|\|)</string>
					<key>name</key>
					<string>keyword.operator.logical.groovy</string>
				</dict>
			</array>
		</dict>
		<key>map-keys</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>constant.other.key.groovy</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.seperator.key-value.groovy</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(\w+)\s*(:)</string>
				</dict>
			</array>
		</dict>
		<key>method-call</key>
		<dict>
			<key>begin</key>
			<string>(\w+)(\()</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>meta.method.groovy</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.method-parameters.begin.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.method-parameters.end.groovy</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.method-call.groovy</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>,</string>
					<key>name</key>
					<string>punctuation.definition.seperator.parameter.groovy</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#groovy-code</string>
				</dict>
			</array>
		</dict>
		<key>method-declaration-remainder</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.parameters.begin.groovy</string>
						</dict>
					</dict>
					<key>contentName</key>
					<string>meta.definition.method.parameters.groovy</string>
					<key>end</key>
					<string>\)</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.end.groovy</string>
						</dict>
					</dict>
					<key>patterns</key>
					<array>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.type.parameter.groovy</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>variable.parameter.groovy</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(?x)\s*
								(
									(?:boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:&lt;(?:[\w, ]*)&gt;)?(?:\[\s*\])*)
								)?
								\s*
								([a-z_][A-Za-z0-9_]*) # variable
							</string>
							<key>name</key>
							<string>meta.definition.method.parameter.groovy</string>
						</dict>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.type.parameter.groovy</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:&lt;(?:[\w, ]*)&gt;)?(?:\[\s*\])*)</string>
							<key>name</key>
							<string>meta.definition.method.parameter.groovy</string>
						</dict>
						<dict>
							<key>match</key>
							<string>,</string>
							<key>name</key>
							<string>punctuation.definition.parameters.seperator.groovy</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#comment-block</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?&lt;=\))\s*(throws)\s</string>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.throws.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=$|\{)</string>
					<key>name</key>
					<string>meta.definition.method.throwables.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.type.throwable.groovy</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.throwables.seperator.groovy</string>
								</dict>
							</dict>
							<key>match</key>
							<string>((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>methods</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?x)^\s*
						(?: # zero or more modifiers
							(?:
								(public|private|protected)|(final)|(native|synchronized|abstract|threadsafe|transient)
							)
							\s+
						)?
						\s*  
						([A-Z](?:[a-zA-Z0-9_])+) # constructor/class name
						\s* 
						(?=\()
					</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.access-control.groovy</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.final.groovy</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.other.groovy</string>
						</dict>
						<key>4</key>
						<dict>
							<key>name</key>
							<string>entity.name.function.constructor.groovy</string>
						</dict>
						<key>5</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.begin.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>{|$\n?</string>
					<key>name</key>
					<string>meta.definition.constructor.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#method-declaration-remainder</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?x)^\s*
						(?:
							(?: # or modifier and optional type
								(?:(?:\b(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s+)+\s* # modifier
								(?:\b 
									(void)
									|
									(boolean|byte|char|short|int|float|long|double) # primitive
									|
									( # or class type
										(?:\w+\.)*[A-Z]\w+\b # Class name
										(?:&lt;(?:[\w, ]*)&gt;)? # optional Generic type
										(?:\[\s*\])* # zero or more square brackets (array)
									)
								)?
							)
							|
							(?:\b # or type by itself
								(def)
								|
								(void)
								|
								(boolean|byte|char|short|int|float|long|double) # primitive
								|
								( # or class type
									(?:\w+\.)*[A-Z]\w+\b # Class name
									(?:&lt;(?:[\w, ]*)&gt;)? # optional generics info
									(?:\[\s*\])* # zero or more square brackets (array)
								)
							)
						)
						\s*
						(\w+) # method name
						\s* 
						(?=\() # opening parens 
					</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.access-control.groovy</string>
						</dict>
						<key>10</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.primitive.groovy</string>
						</dict>
						<key>11</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.class.groovy</string>
						</dict>
						<key>12</key>
						<dict>
							<key>name</key>
							<string>entity.name.function.groovy</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.static.groovy</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.final.groovy</string>
						</dict>
						<key>4</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.other.groovy</string>
						</dict>
						<key>5</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.void.groovy</string>
						</dict>
						<key>6</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.primitive.groovy</string>
						</dict>
						<key>7</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.class.groovy</string>
						</dict>
						<key>8</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.def.groovy</string>
						</dict>
						<key>9</key>
						<dict>
							<key>name</key>
							<string>storage.type.return-type.void.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>{|$\n?</string>
					<key>name</key>
					<string>meta.definition.method.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#method-declaration-remainder</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>nest_curly</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>captures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.section.scope.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#nest_curly</string>
				</dict>
			</array>
		</dict>
		<key>numbers</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>((0(x|X)[0-9a-fA-F]*)|(\+|-)?\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b</string>
					<key>name</key>
					<string>constant.numeric.groovy</string>
				</dict>
			</array>
		</dict>
		<key>regexp</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.regexp.begin.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>/</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.regexp.end.groovy</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.regexp.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>\\.</string>
							<key>name</key>
							<string>constant.character.escape.groovy</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>storage-modifiers</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(private|protected|public)\b</string>
					<key>name</key>
					<string>storage.modifier.access-control.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(static)\b</string>
					<key>name</key>
					<string>storage.modifier.static.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(final)\b</string>
					<key>name</key>
					<string>storage.modifier.final.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(native|synchronized|abstract|threadsafe|transient)\b</string>
					<key>name</key>
					<string>storage.modifier.other.groovy</string>
				</dict>
			</array>
		</dict>
		<key>storage-types</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(@[^ (]+)(\()</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.annotation.groovy</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.annotation-arguments.begin.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(\))</string>
					<key>endCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.annotation-arguments.end.groovy</string>
						</dict>
					</dict>
					<key>name</key>
					<string>meta.declaration.annotation.groovy</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>constant.other.key.groovy</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>keyword.operator.assignment.groovy</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(\w*)\s*(=)</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#values</string>
						</dict>
						<dict>
							<key>match</key>
							<string>,</string>
							<key>name</key>
							<string>punctuation.definition.seperator.groovy</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>@\S+</string>
					<key>name</key>
					<string>storage.type.annotation.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(def)\b</string>
					<key>name</key>
					<string>storage.type.def.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(boolean|byte|char|short|int|float|long|double)(?:\[\s*\])*\b</string>
					<key>name</key>
					<string>storage.type.primitive.groovy</string>
				</dict>
			</array>
		</dict>
		<key>string-quoted-double</key>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>"</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.groovy</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.double.groovy</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\.</string>
					<key>name</key>
					<string>constant.character.escape.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\$\w+</string>
					<key>name</key>
					<string>variable.other.interpolated.groovy</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>\$\{</string>
					<key>captures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.embedded.groovy</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\}</string>
					<key>name</key>
					<string>source.groovy.embedded.source</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#nest_curly</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>string-quoted-single</key>
		<dict>
			<key>begin</key>
			<string>'</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>'</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.groovy</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.single.groovy</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\.</string>
					<key>name</key>
					<string>constant.character.escape.groovy</string>
				</dict>
			</array>
		</dict>
		<key>strings</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string-quoted-double</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string-quoted-single</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#regexp</string>
				</dict>
			</array>
		</dict>
		<key>structures</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.structure.begin.groovy</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.structure.end.groovy</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.structure.groovy</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#groovy-code</string>
				</dict>
				<dict>
					<key>match</key>
					<string>,</string>
					<key>name</key>
					<string>punctuation.definition.separator.groovy</string>
				</dict>
			</array>
		</dict>
		<key>support-functions</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(?x)\b(?:sprintf|print(?:f|ln)?)\b</string>
					<key>name</key>
					<string>support.function.print.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?x)\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|
					Null)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|
					ArrayEquals)))\b</string>
					<key>name</key>
					<string>support.function.testing.groovy</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?x)\b(?:sleep|inspect|dump|use|with)\b</string>
					<key>name</key>
					<string>support.function.other.groovy</string>
				</dict>
			</array>
		</dict>
		<key>values</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#variables</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#strings</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#numbers</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#constants</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#class-object</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#structures</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#method-call</string>
				</dict>
			</array>
		</dict>
		<key>variables</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(this|super)\b</string>
					<key>name</key>
					<string>variable.language.groovy</string>
				</dict>
			</array>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.groovy</string>
	<key>uuid</key>
	<string>B3A64888-EBBB-4436-8D9E-F1169C5D7613</string>
</dict>
</plist>
