<?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>java</string>
		<string>bsh</string>
	</array>
	<key>keyEquivalent</key>
	<string>^~J</string>
	<key>name</key>
	<string>Java</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.package.java</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.package.java</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.java</string>
				</dict>
			</dict>
			<key>match</key>
			<string>^\s*(package)\b(?:\s*([^ ;$]+)\s*(;)?)?</string>
			<key>name</key>
			<string>meta.package.java</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>(import static)\b\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.import.static.java</string>
				</dict>
			</dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.import.java</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.import.java</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.java</string>
				</dict>
			</dict>
			<key>contentName</key>
			<string>storage.modifier.import.java</string>
			<key>end</key>
			<string>\s*(?:$|(;))</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.java</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.import.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\.</string>
					<key>name</key>
					<string>punctuation.separator.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\s</string>
					<key>name</key>
					<string>invalid.illegal.character_not_allowed_here.java</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>(import)\b\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.import.java</string>
				</dict>
			</dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.import.java</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.import.java</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.java</string>
				</dict>
			</dict>
			<key>contentName</key>
			<string>storage.modifier.import.java</string>
			<key>end</key>
			<string>\s*(?:$|(;))</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.terminator.java</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.import.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\.</string>
					<key>name</key>
					<string>punctuation.separator.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\s</string>
					<key>name</key>
					<string>invalid.illegal.character_not_allowed_here.java</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>include</key>
			<string>#code</string>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>all-types</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#primitive-arrays</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#primitive-types</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-types</string>
				</dict>
			</array>
		</dict>
		<key>annotations</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.java</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.annotation-arguments.begin.java</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.java</string>
						</dict>
					</dict>
					<key>name</key>
					<string>meta.declaration.annotation.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>constant.other.key.java</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>keyword.operator.assignment.java</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(\w*)\s*(=)</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#code</string>
						</dict>
						<dict>
							<key>match</key>
							<string>,</string>
							<key>name</key>
							<string>punctuation.separator.property.java</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>match</key>
					<string>@\w*</string>
					<key>name</key>
					<string>storage.type.annotation.java</string>
				</dict>
			</array>
		</dict>
		<key>anonymous-classes-and-new</key>
		<dict>
			<key>begin</key>
			<string>\bnew\b</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>keyword.control.new.java</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;=\)|\])(?!\s*{)|(?&lt;=})|(?=;)</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(\w+)\s*(?=\[)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.type.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(})|(?=\s*(?:,|;|\)))</string>
					<key>endCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.block.end.java</string>
						</dict>
					</dict>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>\[</string>
							<key>end</key>
							<string>\]</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#code</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>{</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.section.block.begin.java</string>
								</dict>
							</dict>
							<key>end</key>
							<string>(?=})</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#code</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=\w.*\()</string>
					<key>end</key>
					<string>(?&lt;=\))</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>\(</string>
							<key>beginCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.type.java</string>
								</dict>
							</dict>
							<key>end</key>
							<string>\)</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#code</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.inner-class.begin.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>}</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.inner-class.end.java</string>
						</dict>
					</dict>
					<key>name</key>
					<string>meta.inner-class.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#class-body</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>assertions</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\b(assert)\s</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.control.assert.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>$</string>
					<key>name</key>
					<string>meta.declaration.assertion.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>:</string>
							<key>name</key>
							<string>keyword.operator.assert.expression-seperator.java</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#code</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>class</key>
		<dict>
			<key>begin</key>
			<string>(?=\w?[\w\s]*(?:class|(?:@)?interface|enum)\s+\w+)</string>
			<key>end</key>
			<string>}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.section.class.end.java</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.class.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#storage-modifiers</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.java</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>entity.name.type.class.java</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(class|(?:@)?interface|enum)\s+(\w+)</string>
					<key>name</key>
					<string>meta.class.identifier.java</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>extends</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.extends.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?={|implements)</string>
					<key>name</key>
					<string>meta.definition.class.inherited.classes.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types-inherited</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#comments</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(implements)\s</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>storage.modifier.implements.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=\s*extends|\{)</string>
					<key>name</key>
					<string>meta.definition.class.implemented.interfaces.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types-inherited</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#comments</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.class.begin.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=})</string>
					<key>name</key>
					<string>meta.class.body.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#class-body</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>class-body</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#class</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#enums</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#variables</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#methods</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#annotations</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#storage-modifiers</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#code</string>
				</dict>
			</array>
		</dict>
		<key>code</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#class</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.block.begin.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>}</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.block.end.java</string>
						</dict>
					</dict>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#code</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#assertions</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parens</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#constants-and-special-vars</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#anonymous-classes-and-new</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#keywords</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#storage-modifiers</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#method-call</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#strings</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#all-types</string>
				</dict>
			</array>
		</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.java</string>
						</dict>
					</dict>
					<key>match</key>
					<string>/\*\*/</string>
					<key>name</key>
					<string>comment.block.empty.java</string>
				</dict>
				<dict>
					<key>include</key>
					<string>text.html.javadoc</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comments-inline</string>
				</dict>
			</array>
		</dict>
		<key>comments-inline</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>/\*</string>
					<key>captures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\*/</string>
					<key>name</key>
					<string>comment.block.java</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(^[ \t]+)?(?=//)</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.comment.leading.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?!\G)</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>//</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.comment.java</string>
								</dict>
							</dict>
							<key>end</key>
							<string>\n</string>
							<key>name</key>
							<string>comment.line.double-slash.java</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>constants-and-special-vars</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(true|false|null)\b</string>
					<key>name</key>
					<string>constant.language.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(this|super)\b</string>
					<key>name</key>
					<string>variable.language.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b0[xX]\h([\h_]*\h)?[lL]?(?!\w|\.)</string>
					<key>name</key>
					<string>constant.numeric.hex.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b0[0-7_]*[0-7][lL]?\b</string>
					<key>name</key>
					<string>constant.numeric.octal.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b0[bB][01]([01_]*[01])?[lL]?\b</string>
					<key>name</key>
					<string>constant.numeric.binary.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(0|[1-9]([0-9_]*[0-9])?)[lL]?(?!\w|\.)</string>
					<key>name</key>
					<string>constant.numeric.integer.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?x)
						(?&lt;!\w)										# Ensure word boundry
						(?&gt;
							0[xX]									# Start literal
							(\h([\h_]*\h)?)?						# Optional Number
							(
								(?&lt;=\h)\.							# A number must exist on
						      | \.(?=\h)							#   one side of the decimal
						      | (?&lt;=\h)								# Decimal not required
							)
							(\h([\h_]*\h)?)?						# Optional Number
							[pP]									# Exponent Indicator
							[+-]?(0|[1-9]([0-9_]*[0-9])?)			# Signed Integer
							[fFdD]?									# Float Type Suffix
						)
						(?!\w)										# Ensure word boundry
					</string>
					<key>name</key>
					<string>constant.numeric.hex-float.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?x)
						(?&lt;!\w)											# Ensure word boundry
						(?&gt;
							(
								(0|[1-9]([0-9_]*[0-9])?)				# Leading digits
								(?=[eEfFdD.])							# Allow for numbers without .
							)?
							(
								(?&lt;=[0-9])(?=[eEfFdD])					# Allow for numbers without .
							  | \.
							)
							(
								[0-9]([0-9_]*[0-9])?					# Numbers after .
							)?
							(
								[eE][+-]?(0|[1-9]([0-9_]*[0-9])?)		# Exponent
							)?
							[fFdD]?										# Float Type Suffix
						)
						(?!\w)											# Ensure word boundry
					</string>
					<key>name</key>
					<string>constant.numeric.float.java</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.dereference.java</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(\.)?\b([A-Z][A-Z0-9_]+)(?!&lt;|\.class|\s*\w+\s*=)\b</string>
					<key>name</key>
					<string>constant.other.java</string>
				</dict>
			</array>
		</dict>
		<key>enums</key>
		<dict>
			<key>begin</key>
			<string>^(?=\s*[A-Z0-9_]+\s*({|\(|,))</string>
			<key>end</key>
			<string>(?=;|})</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\w+</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>constant.other.enum.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=,|;|})</string>
					<key>name</key>
					<string>meta.enum.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#parens</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>{</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.section.enum.begin.java</string>
								</dict>
							</dict>
							<key>end</key>
							<string>}</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.section.enum.end.java</string>
								</dict>
							</dict>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#class-body</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#annotations</string>
				</dict>
			</array>
		</dict>
		<key>keywords</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(try|catch|finally|throw)\b</string>
					<key>name</key>
					<string>keyword.control.catch-exception.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\?|:</string>
					<key>name</key>
					<string>keyword.control.ternary.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(return|break|case|continue|default|do|while|for|switch|if|else)\b</string>
					<key>name</key>
					<string>keyword.control.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\b(instanceof)\b</string>
					<key>name</key>
					<string>keyword.operator.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(&lt;&lt;|&gt;&gt;&gt;?|~|\^)</string>
					<key>name</key>
					<string>keyword.operator.bitwise.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>((&amp;|\^|\||&lt;&lt;|&gt;&gt;&gt;?)=)</string>
					<key>name</key>
					<string>keyword.operator.assignment.bitwise.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(===?|!=|&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;)</string>
					<key>name</key>
					<string>keyword.operator.comparison.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>([+*/%-]=)</string>
					<key>name</key>
					<string>keyword.operator.assignment.arithmetic.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(=)</string>
					<key>name</key>
					<string>keyword.operator.assignment.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\-\-|\+\+)</string>
					<key>name</key>
					<string>keyword.operator.increment-decrement.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\-|\+|\*|\/|%)</string>
					<key>name</key>
					<string>keyword.operator.arithmetic.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(!|&amp;&amp;|\|\|)</string>
					<key>name</key>
					<string>keyword.operator.logical.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(\||&amp;)</string>
					<key>name</key>
					<string>keyword.operator.bitwise.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>(?&lt;=\S)\.(?=\S)</string>
					<key>name</key>
					<string>keyword.operator.dereference.java</string>
				</dict>
				<dict>
					<key>match</key>
					<string>;</string>
					<key>name</key>
					<string>punctuation.terminator.java</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.java</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.method-parameters.begin.java</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.java</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.method-call.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>,</string>
					<key>name</key>
					<string>punctuation.definition.seperator.parameter.java</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#code</string>
				</dict>
			</array>
		</dict>
		<key>methods</key>
		<dict>
			<key>begin</key>
			<string>(?!new)(?=[\w&lt;].*\s+)(?=([^=/]|/(?!/))+\()</string>
			<key>end</key>
			<string>(})|(?=;)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.section.method.end.java</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.method.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#storage-modifiers</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>(\w+)\s*\(</string>
					<key>beginCaptures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>entity.name.function.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\)</string>
					<key>name</key>
					<string>meta.method.identifier.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#parameters</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#comments</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>&lt;</string>
					<key>end</key>
					<string>&gt;</string>
					<key>name</key>
					<string>storage.type.token.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>&lt;</string>
							<key>comment</key>
							<string>This is just to support &lt;&gt;'s with no actual type prefix</string>
							<key>end</key>
							<string>&gt;|[^\w\s,\[\]&lt;]</string>
							<key>name</key>
							<string>storage.type.generic.java</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>(?=\w.*\s+\w+\s*\()</string>
					<key>end</key>
					<string>(?=\w+\s*\()</string>
					<key>name</key>
					<string>meta.method.return-type.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#all-types</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#comments</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#throws</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>{</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.section.method.begin.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>(?=})</string>
					<key>name</key>
					<string>meta.method.body.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#code</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
			</array>
		</dict>
		<key>object-types</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\b((?:[a-z]\w*\.)*[A-Z]+\w*)&lt;</string>
					<key>end</key>
					<string>&gt;|[^\w\s,\?&lt;\[\]]</string>
					<key>name</key>
					<string>storage.type.generic.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>&lt;</string>
							<key>comment</key>
							<string>This is just to support &lt;&gt;'s with no actual type prefix</string>
							<key>end</key>
							<string>&gt;|[^\w\s,\[\]&lt;]</string>
							<key>name</key>
							<string>storage.type.generic.java</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>\b((?:[a-z]\w*\.)*[A-Z]+\w*)(?=\[)</string>
					<key>end</key>
					<string>(?=[^\]\s])</string>
					<key>name</key>
					<string>storage.type.object.array.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>\[</string>
							<key>end</key>
							<string>\]</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#code</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.dereference.java</string>
						</dict>
					</dict>
					<key>match</key>
					<string>\b(?:[a-z]\w*(\.))*[A-Z]+\w*\b</string>
					<key>name</key>
					<string>storage.type.java</string>
				</dict>
			</array>
		</dict>
		<key>object-types-inherited</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>\b((?:[a-z]\w*\.)*[A-Z]+\w*)&lt;</string>
					<key>end</key>
					<string>&gt;|[^\w\s,&lt;]</string>
					<key>name</key>
					<string>entity.other.inherited-class.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#object-types</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>&lt;</string>
							<key>comment</key>
							<string>This is just to support &lt;&gt;'s with no actual type prefix</string>
							<key>end</key>
							<string>&gt;|[^\w\s,&lt;]</string>
							<key>name</key>
							<string>storage.type.generic.java</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>keyword.operator.dereference.java</string>
						</dict>
					</dict>
					<key>match</key>
					<string>\b(?:[a-z]\w*(\.))*[A-Z]+\w*</string>
					<key>name</key>
					<string>entity.other.inherited-class.java</string>
				</dict>
			</array>
		</dict>
		<key>parameters</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>final</string>
					<key>name</key>
					<string>storage.modifier.java</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#annotations</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#primitive-arrays</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#primitive-types</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-types</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\w+</string>
					<key>name</key>
					<string>variable.parameter.java</string>
				</dict>
			</array>
		</dict>
		<key>parens</key>
		<dict>
			<key>begin</key>
			<string>\(</string>
			<key>end</key>
			<string>\)</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#code</string>
				</dict>
			</array>
		</dict>
		<key>primitive-arrays</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(?:void|boolean|byte|char|short|int|float|long|double)(\[\])*\b</string>
					<key>name</key>
					<string>storage.type.primitive.array.java</string>
				</dict>
			</array>
		</dict>
		<key>primitive-types</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(?:void|boolean|byte|char|short|int|float|long|double)\b</string>
					<key>name</key>
					<string>storage.type.primitive.java</string>
				</dict>
			</array>
		</dict>
		<key>storage-modifiers</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.java</string>
				</dict>
			</dict>
			<key>match</key>
			<string>\b(public|private|protected|static|final|native|synchronized|volatile|abstract|threadsafe|transient)\b</string>
		</dict>
		<key>strings</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.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>"</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.java</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.quoted.double.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>\\.</string>
							<key>name</key>
							<string>constant.character.escape.java</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.java</string>
						</dict>
					</dict>
					<key>end</key>
					<string>'</string>
					<key>endCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.string.end.java</string>
						</dict>
					</dict>
					<key>name</key>
					<string>string.quoted.single.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>\\.</string>
							<key>name</key>
							<string>constant.character.escape.java</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>throws</key>
		<dict>
			<key>begin</key>
			<string>throws</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.java</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?={|;)</string>
			<key>name</key>
			<string>meta.throwables.java</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#object-types</string>
				</dict>
			</array>
		</dict>
		<key>values</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#strings</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-types</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#constants-and-special-vars</string>
				</dict>
			</array>
		</dict>
		<key>variables</key>
		<dict>
			<key>applyEndPatternLast</key>
			<integer>1</integer>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?x:(?=
                        (?:
                            (?:private|protected|public|native|synchronized|volatile|abstract|threadsafe|transient|static|final) # visibility/modifier
                                |
                            (?:def)
                                |
                            (?:void|boolean|byte|char|short|int|float|long|double)
                                |
                            (?:(?:[a-z]\w*\.)*[A-Z]+\w*) # object type
                        )
                        \s+
                        (?!private|protected|public|native|synchronized|volatile|abstract|threadsafe|transient|static|final|def|void|boolean|byte|char|short|int|float|long|double)
                        [\w\d_&lt;&gt;\[\],\?][\w\d_&lt;&gt;\[\],\? \t]*
                        (?:=|$)

					))</string>
					<key>end</key>
					<string>(?=;)</string>
					<key>name</key>
					<string>meta.definition.variable.java</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>\s</string>
						</dict>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>constant.other.variable.java</string>
								</dict>
							</dict>
							<key>match</key>
							<string>([A-Z_0-9]+)\s+(?=\=)</string>
						</dict>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>meta.definition.variable.name.java</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(\w[^\s,]*)\s+(?=\=)</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>=</string>
							<key>beginCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>keyword.operator.assignment.java</string>
								</dict>
							</dict>
							<key>end</key>
							<string>(?=;)</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#code</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>captures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>meta.definition.variable.name.java</string>
								</dict>
							</dict>
							<key>match</key>
							<string>(\w[^\s=]*)(?=\s*;)</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#code</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.java</string>
	<key>uuid</key>
	<string>2B449DF6-6B1D-11D9-94EC-000D93589AF6</string>
</dict>
</plist>