1{
2	"information_for_contributors": [
3		"This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson",
4		"If you want to provide a fix or improvement, please create a pull request against the original repository.",
5		"Once accepted there, we are happy to receive an update request."
6	],
7	"version": "https://github.com/atom/language-java/commit/29f977dc42a7e2568b39bb6fb34c4ef108eb59b3",
8	"name": "Java",
9	"scopeName": "source.java",
10	"patterns": [
11		{
12			"begin": "\\b(package)\\b\\s*",
13			"beginCaptures": {
14				"1": {
15					"name": "keyword.other.package.java"
16				}
17			},
18			"end": "\\s*(;)",
19			"endCaptures": {
20				"1": {
21					"name": "punctuation.terminator.java"
22				}
23			},
24			"name": "meta.package.java",
25			"contentName": "storage.modifier.package.java",
26			"patterns": [
27				{
28					"include": "#comments"
29				},
30				{
31					"match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
32					"name": "invalid.illegal.character_not_allowed_here.java"
33				},
34				{
35					"match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
36					"name": "invalid.illegal.character_not_allowed_here.java"
37				},
38				{
39					"match": "[A-Z]+",
40					"name": "invalid.deprecated.package_name_not_lowercase.java"
41				},
42				{
43					"match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
44					"name": "invalid.illegal.character_not_allowed_here.java"
45				},
46				{
47					"match": "\\.",
48					"name": "punctuation.separator.java"
49				}
50			]
51		},
52		{
53			"begin": "\\b(import)\\b\\s*\\b(static)?\\b\\s",
54			"beginCaptures": {
55				"1": {
56					"name": "keyword.other.import.java"
57				},
58				"2": {
59					"name": "storage.modifier.java"
60				}
61			},
62			"end": "\\s*(;)",
63			"endCaptures": {
64				"1": {
65					"name": "punctuation.terminator.java"
66				}
67			},
68			"name": "meta.import.java",
69			"contentName": "storage.modifier.import.java",
70			"patterns": [
71				{
72					"include": "#comments"
73				},
74				{
75					"match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
76					"name": "invalid.illegal.character_not_allowed_here.java"
77				},
78				{
79					"match": "(?<!\\.)\\s*\\*",
80					"name": "invalid.illegal.character_not_allowed_here.java"
81				},
82				{
83					"match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
84					"name": "invalid.illegal.character_not_allowed_here.java"
85				},
86				{
87					"match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
88					"name": "invalid.illegal.character_not_allowed_here.java"
89				},
90				{
91					"match": "\\.",
92					"name": "punctuation.separator.java"
93				},
94				{
95					"match": "\\*",
96					"name": "variable.language.wildcard.java"
97				}
98			]
99		},
100		{
101			"include": "#comments-javadoc"
102		},
103		{
104			"include": "#code"
105		},
106		{
107			"include": "#module"
108		}
109	],
110	"repository": {
111		"all-types": {
112			"patterns": [
113				{
114					"include": "#primitive-arrays"
115				},
116				{
117					"include": "#primitive-types"
118				},
119				{
120					"include": "#object-types"
121				}
122			]
123		},
124		"annotations": {
125			"patterns": [
126				{
127					"begin": "((@)\\s*([^\\s(]+))(\\()",
128					"beginCaptures": {
129						"2": {
130							"name": "punctuation.definition.annotation.java"
131						},
132						"3": {
133							"name": "storage.type.annotation.java"
134						},
135						"4": {
136							"name": "punctuation.definition.annotation-arguments.begin.bracket.round.java"
137						}
138					},
139					"end": "\\)",
140					"endCaptures": {
141						"0": {
142							"name": "punctuation.definition.annotation-arguments.end.bracket.round.java"
143						}
144					},
145					"name": "meta.declaration.annotation.java",
146					"patterns": [
147						{
148							"captures": {
149								"1": {
150									"name": "constant.other.key.java"
151								},
152								"2": {
153									"name": "keyword.operator.assignment.java"
154								}
155							},
156							"match": "(\\w*)\\s*(=)"
157						},
158						{
159							"include": "#code"
160						}
161					]
162				},
163				{
164					"match": "(@)(interface)\\s+(\\w*)|((@)\\s*(\\w+))",
165					"name": "meta.declaration.annotation.java",
166					"captures": {
167						"1": {
168							"name": "punctuation.definition.annotation.java"
169						},
170						"2": {
171							"name": "storage.modifier.java"
172						},
173						"3": {
174							"name": "storage.type.annotation.java"
175						},
176						"5": {
177							"name": "punctuation.definition.annotation.java"
178						},
179						"6": {
180							"name": "storage.type.annotation.java"
181						}
182					}
183				}
184			]
185		},
186		"anonymous-block-and-instance-initializer": {
187			"begin": "{",
188			"beginCaptures": {
189				"0": {
190					"name": "punctuation.section.block.begin.bracket.curly.java"
191				}
192			},
193			"end": "}",
194			"endCaptures": {
195				"0": {
196					"name": "punctuation.section.block.end.bracket.curly.java"
197				}
198			},
199			"patterns": [
200				{
201					"include": "#code"
202				}
203			]
204		},
205		"anonymous-classes-and-new": {
206			"begin": "\\bnew\\b",
207			"beginCaptures": {
208				"0": {
209					"name": "keyword.control.new.java"
210				}
211			},
212			"end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
213			"patterns": [
214				{
215					"include": "#comments"
216				},
217				{
218					"include": "#function-call"
219				},
220				{
221					"include": "#all-types"
222				},
223				{
224					"begin": "(?<=\\))",
225					"end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
226					"patterns": [
227						{
228							"include": "#comments"
229						},
230						{
231							"begin": "{",
232							"beginCaptures": {
233								"0": {
234									"name": "punctuation.section.inner-class.begin.bracket.curly.java"
235								}
236							},
237							"end": "}",
238							"endCaptures": {
239								"0": {
240									"name": "punctuation.section.inner-class.end.bracket.curly.java"
241								}
242							},
243							"name": "meta.inner-class.java",
244							"patterns": [
245								{
246									"include": "#class-body"
247								}
248							]
249						}
250					]
251				},
252				{
253					"begin": "(?<=\\])",
254					"end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
255					"patterns": [
256						{
257							"include": "#comments"
258						},
259						{
260							"begin": "{",
261							"beginCaptures": {
262								"0": {
263									"name": "punctuation.section.array-initializer.begin.bracket.curly.java"
264								}
265							},
266							"end": "}",
267							"endCaptures": {
268								"0": {
269									"name": "punctuation.section.array-initializer.end.bracket.curly.java"
270								}
271							},
272							"name": "meta.array-initializer.java",
273							"patterns": [
274								{
275									"include": "#code"
276								}
277							]
278						}
279					]
280				},
281				{
282					"include": "#parens"
283				}
284			]
285		},
286		"assertions": {
287			"patterns": [
288				{
289					"begin": "\\b(assert)\\s",
290					"beginCaptures": {
291						"1": {
292							"name": "keyword.control.assert.java"
293						}
294					},
295					"end": "$",
296					"name": "meta.declaration.assertion.java",
297					"patterns": [
298						{
299							"match": ":",
300							"name": "keyword.operator.assert.expression-separator.java"
301						},
302						{
303							"include": "#code"
304						}
305					]
306				}
307			]
308		},
309		"class": {
310			"begin": "(?=\\w?[\\w\\s-]*\\b(?:class|(?<!@)interface|enum)\\s+[\\w$]+)",
311			"end": "}",
312			"endCaptures": {
313				"0": {
314					"name": "punctuation.section.class.end.bracket.curly.java"
315				}
316			},
317			"name": "meta.class.java",
318			"patterns": [
319				{
320					"include": "#storage-modifiers"
321				},
322				{
323					"include": "#generics"
324				},
325				{
326					"include": "#comments"
327				},
328				{
329					"captures": {
330						"1": {
331							"name": "storage.modifier.java"
332						},
333						"2": {
334							"name": "entity.name.type.class.java"
335						}
336					},
337					"match": "(class|(?<!@)interface|enum)\\s+([\\w$]+)",
338					"name": "meta.class.identifier.java"
339				},
340				{
341					"begin": "extends",
342					"beginCaptures": {
343						"0": {
344							"name": "storage.modifier.extends.java"
345						}
346					},
347					"end": "(?={|implements|permits)",
348					"name": "meta.definition.class.inherited.classes.java",
349					"patterns": [
350						{
351							"include": "#object-types-inherited"
352						},
353						{
354							"include": "#comments"
355						}
356					]
357				},
358				{
359					"begin": "(implements)\\s",
360					"beginCaptures": {
361						"1": {
362							"name": "storage.modifier.implements.java"
363						}
364					},
365					"end": "(?=\\s*extends|permits|\\{)",
366					"name": "meta.definition.class.implemented.interfaces.java",
367					"patterns": [
368						{
369							"include": "#object-types-inherited"
370						},
371						{
372							"include": "#comments"
373						}
374					]
375				},
376				{
377					"begin": "(permits)\\s",
378					"beginCaptures": {
379						"1": {
380							"name": "storage.modifier.permits.java"
381						}
382					},
383					"end": "(?=\\s*extends|implements|\\{)",
384					"name": "meta.definition.class.permits.classes.java",
385					"patterns": [
386						{
387							"include": "#object-types-inherited"
388						},
389						{
390							"include": "#comments"
391						}
392					]
393				},
394				{
395					"begin": "{",
396					"beginCaptures": {
397						"0": {
398							"name": "punctuation.section.class.begin.bracket.curly.java"
399						}
400					},
401					"end": "(?=})",
402					"contentName": "meta.class.body.java",
403					"patterns": [
404						{
405							"include": "#class-body"
406						}
407					]
408				}
409			]
410		},
411		"class-body": {
412			"patterns": [
413				{
414					"include": "#comments-javadoc"
415				},
416				{
417					"include": "#comments"
418				},
419				{
420					"include": "#enums"
421				},
422				{
423					"include": "#class"
424				},
425				{
426					"include": "#generics"
427				},
428				{
429					"include": "#static-initializer"
430				},
431				{
432					"include": "#class-fields-and-methods"
433				},
434				{
435					"include": "#annotations"
436				},
437				{
438					"include": "#storage-modifiers"
439				},
440				{
441					"include": "#member-variables"
442				},
443				{
444					"include": "#code"
445				}
446			]
447		},
448		"class-fields-and-methods": {
449			"patterns": [
450				{
451					"begin": "(?=\\=)",
452					"end": "(?=;)",
453					"patterns": [
454						{
455							"include": "#code"
456						}
457					]
458				},
459				{
460					"include": "#methods"
461				}
462			]
463		},
464		"code": {
465			"patterns": [
466				{
467					"include": "#annotations"
468				},
469				{
470					"include": "#comments"
471				},
472				{
473					"include": "#enums"
474				},
475				{
476					"include": "#class"
477				},
478				{
479					"include": "#record"
480				},
481				{
482					"include": "#anonymous-block-and-instance-initializer"
483				},
484				{
485					"include": "#try-catch-finally"
486				},
487				{
488					"include": "#assertions"
489				},
490				{
491					"include": "#parens"
492				},
493				{
494					"include": "#constants-and-special-vars"
495				},
496				{
497					"include": "#numbers"
498				},
499				{
500					"include": "#anonymous-classes-and-new"
501				},
502				{
503					"include": "#lambda-expression"
504				},
505				{
506					"include": "#keywords"
507				},
508				{
509					"include": "#storage-modifiers"
510				},
511				{
512					"include": "#method-call"
513				},
514				{
515					"include": "#function-call"
516				},
517				{
518					"include": "#variables"
519				},
520				{
521					"include": "#variables-local"
522				},
523				{
524					"include": "#objects"
525				},
526				{
527					"include": "#properties"
528				},
529				{
530					"include": "#strings"
531				},
532				{
533					"include": "#all-types"
534				},
535				{
536					"match": ",",
537					"name": "punctuation.separator.delimiter.java"
538				},
539				{
540					"match": "\\.",
541					"name": "punctuation.separator.period.java"
542				},
543				{
544					"match": ";",
545					"name": "punctuation.terminator.java"
546				}
547			]
548		},
549		"comments": {
550			"patterns": [
551				{
552					"captures": {
553						"0": {
554							"name": "punctuation.definition.comment.java"
555						}
556					},
557					"match": "/\\*\\*/",
558					"name": "comment.block.empty.java"
559				},
560				{
561					"include": "#comments-inline"
562				}
563			]
564		},
565		"comments-inline": {
566			"patterns": [
567				{
568					"begin": "/\\*",
569					"captures": {
570						"0": {
571							"name": "punctuation.definition.comment.java"
572						}
573					},
574					"end": "\\*/",
575					"name": "comment.block.java"
576				},
577				{
578					"begin": "(^[ \\t]+)?(?=//)",
579					"beginCaptures": {
580						"1": {
581							"name": "punctuation.whitespace.comment.leading.java"
582						}
583					},
584					"end": "(?!\\G)",
585					"patterns": [
586						{
587							"begin": "//",
588							"beginCaptures": {
589								"0": {
590									"name": "punctuation.definition.comment.java"
591								}
592							},
593							"end": "\\n",
594							"name": "comment.line.double-slash.java"
595						}
596					]
597				}
598			]
599		},
600		"comments-javadoc": {
601			"patterns": [
602				{
603					"begin": "^\\s*(/\\*\\*)(?!/)",
604					"beginCaptures": {
605						"1": {
606							"name": "punctuation.definition.comment.java"
607						}
608					},
609					"end": "\\*/",
610					"endCaptures": {
611						"0": {
612							"name": "punctuation.definition.comment.java"
613						}
614					},
615					"name": "comment.block.javadoc.java",
616					"patterns": [
617						{
618							"match": "@(author|deprecated|return|see|serial|since|version)\\b",
619							"name": "keyword.other.documentation.javadoc.java"
620						},
621						{
622							"match": "(@param)\\s+(\\S+)",
623							"captures": {
624								"1": {
625									"name": "keyword.other.documentation.javadoc.java"
626								},
627								"2": {
628									"name": "variable.parameter.java"
629								}
630							}
631						},
632						{
633							"match": "(@(?:exception|throws))\\s+(\\S+)",
634							"captures": {
635								"1": {
636									"name": "keyword.other.documentation.javadoc.java"
637								},
638								"2": {
639									"name": "entity.name.type.class.java"
640								}
641							}
642						},
643						{
644							"match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*?}",
645							"captures": {
646								"1": {
647									"name": "keyword.other.documentation.javadoc.java"
648								},
649								"2": {
650									"name": "entity.name.type.class.java"
651								},
652								"3": {
653									"name": "variable.parameter.java"
654								}
655							}
656						}
657					]
658				}
659			]
660		},
661		"constants-and-special-vars": {
662			"patterns": [
663				{
664					"match": "\\b(true|false|null)\\b",
665					"name": "constant.language.java"
666				},
667				{
668					"match": "\\bthis\\b",
669					"name": "variable.language.this.java"
670				},
671				{
672					"match": "\\bsuper\\b",
673					"name": "variable.language.java"
674				}
675			]
676		},
677		"enums": {
678			"begin": "^\\s*([\\w\\s]*)(enum)\\s+(\\w+)",
679			"beginCaptures": {
680				"1": {
681					"patterns": [
682						{
683							"include": "#storage-modifiers"
684						}
685					]
686				},
687				"2": {
688					"name": "storage.modifier.java"
689				},
690				"3": {
691					"name": "entity.name.type.enum.java"
692				}
693			},
694			"end": "}",
695			"endCaptures": {
696				"0": {
697					"name": "punctuation.section.enum.end.bracket.curly.java"
698				}
699			},
700			"name": "meta.enum.java",
701			"patterns": [
702				{
703					"begin": "\\b(extends)\\b",
704					"beginCaptures": {
705						"1": {
706							"name": "storage.modifier.extends.java"
707						}
708					},
709					"end": "(?={|\\bimplements\\b)",
710					"name": "meta.definition.class.inherited.classes.java",
711					"patterns": [
712						{
713							"include": "#object-types-inherited"
714						},
715						{
716							"include": "#comments"
717						}
718					]
719				},
720				{
721					"begin": "\\b(implements)\\b",
722					"beginCaptures": {
723						"1": {
724							"name": "storage.modifier.implements.java"
725						}
726					},
727					"end": "(?={|\\bextends\\b)",
728					"name": "meta.definition.class.implemented.interfaces.java",
729					"patterns": [
730						{
731							"include": "#object-types-inherited"
732						},
733						{
734							"include": "#comments"
735						}
736					]
737				},
738				{
739					"begin": "{",
740					"beginCaptures": {
741						"0": {
742							"name": "punctuation.section.enum.begin.bracket.curly.java"
743						}
744					},
745					"end": "(?=})",
746					"patterns": [
747						{
748							"begin": "(?<={)",
749							"end": "(?=;|})",
750							"patterns": [
751								{
752									"include": "#comments-javadoc"
753								},
754								{
755									"include": "#comments"
756								},
757								{
758									"begin": "\\b(\\w+)\\b",
759									"beginCaptures": {
760										"1": {
761											"name": "constant.other.enum.java"
762										}
763									},
764									"end": "(,)|(?=;|})",
765									"endCaptures": {
766										"1": {
767											"name": "punctuation.separator.delimiter.java"
768										}
769									},
770									"patterns": [
771										{
772											"include": "#comments-javadoc"
773										},
774										{
775											"include": "#comments"
776										},
777										{
778											"begin": "\\(",
779											"beginCaptures": {
780												"0": {
781													"name": "punctuation.bracket.round.java"
782												}
783											},
784											"end": "\\)",
785											"endCaptures": {
786												"0": {
787													"name": "punctuation.bracket.round.java"
788												}
789											},
790											"patterns": [
791												{
792													"include": "#code"
793												}
794											]
795										},
796										{
797											"begin": "{",
798											"beginCaptures": {
799												"0": {
800													"name": "punctuation.bracket.curly.java"
801												}
802											},
803											"end": "}",
804											"endCaptures": {
805												"0": {
806													"name": "punctuation.bracket.curly.java"
807												}
808											},
809											"patterns": [
810												{
811													"include": "#class-body"
812												}
813											]
814										}
815									]
816								}
817							]
818						},
819						{
820							"include": "#class-body"
821						}
822					]
823				}
824			]
825		},
826		"function-call": {
827			"begin": "([A-Za-z_$][\\w$]*)\\s*(\\()",
828			"beginCaptures": {
829				"1": {
830					"name": "entity.name.function.java"
831				},
832				"2": {
833					"name": "punctuation.definition.parameters.begin.bracket.round.java"
834				}
835			},
836			"end": "\\)",
837			"endCaptures": {
838				"0": {
839					"name": "punctuation.definition.parameters.end.bracket.round.java"
840				}
841			},
842			"name": "meta.function-call.java",
843			"patterns": [
844				{
845					"include": "#code"
846				}
847			]
848		},
849		"generics": {
850			"begin": "<",
851			"beginCaptures": {
852				"0": {
853					"name": "punctuation.bracket.angle.java"
854				}
855			},
856			"end": ">",
857			"endCaptures": {
858				"0": {
859					"name": "punctuation.bracket.angle.java"
860				}
861			},
862			"patterns": [
863				{
864					"match": "\\b(extends|super)\\b",
865					"name": "storage.modifier.$1.java"
866				},
867				{
868					"match": "(?<!\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\s*<)",
869					"captures": {
870						"1": {
871							"name": "storage.type.java"
872						}
873					}
874				},
875				{
876					"include": "#primitive-arrays"
877				},
878				{
879					"match": "[a-zA-Z$_][a-zA-Z0-9$_]*",
880					"name": "storage.type.generic.java"
881				},
882				{
883					"match": "\\?",
884					"name": "storage.type.generic.wildcard.java"
885				},
886				{
887					"match": "&",
888					"name": "punctuation.separator.types.java"
889				},
890				{
891					"match": ",",
892					"name": "punctuation.separator.delimiter.java"
893				},
894				{
895					"match": "\\.",
896					"name": "punctuation.separator.period.java"
897				},
898				{
899					"include": "#parens"
900				},
901				{
902					"include": "#generics"
903				},
904				{
905					"include": "#comments"
906				}
907			]
908		},
909		"keywords": {
910			"patterns": [
911				{
912					"match": "\\bthrow\\b",
913					"name": "keyword.control.throw.java"
914				},
915				{
916					"match": "\\?|:",
917					"name": "keyword.control.ternary.java"
918				},
919				{
920					"match": "\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\b",
921					"name": "keyword.control.java"
922				},
923				{
924					"match": "\\b(instanceof)\\b",
925					"name": "keyword.operator.instanceof.java"
926				},
927				{
928					"match": "(<<|>>>?|~|\\^)",
929					"name": "keyword.operator.bitwise.java"
930				},
931				{
932					"match": "((&|\\^|\\||<<|>>>?)=)",
933					"name": "keyword.operator.assignment.bitwise.java"
934				},
935				{
936					"match": "(===?|!=|<=|>=|<>|<|>)",
937					"name": "keyword.operator.comparison.java"
938				},
939				{
940					"match": "([+*/%-]=)",
941					"name": "keyword.operator.assignment.arithmetic.java"
942				},
943				{
944					"match": "(=)",
945					"name": "keyword.operator.assignment.java"
946				},
947				{
948					"match": "(\\-\\-|\\+\\+)",
949					"name": "keyword.operator.increment-decrement.java"
950				},
951				{
952					"match": "(\\-|\\+|\\*|\\/|%)",
953					"name": "keyword.operator.arithmetic.java"
954				},
955				{
956					"match": "(!|&&|\\|\\|)",
957					"name": "keyword.operator.logical.java"
958				},
959				{
960					"match": "(\\||&)",
961					"name": "keyword.operator.bitwise.java"
962				},
963				{
964					"match": "\\b(const|goto)\\b",
965					"name": "keyword.reserved.java"
966				}
967			]
968		},
969		"lambda-expression": {
970			"patterns": [
971				{
972					"match": "->",
973					"name": "storage.type.function.arrow.java"
974				}
975			]
976		},
977		"member-variables": {
978			"begin": "(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)",
979			"end": "(?=\\=|;)",
980			"patterns": [
981				{
982					"include": "#storage-modifiers"
983				},
984				{
985					"include": "#variables"
986				},
987				{
988					"include": "#primitive-arrays"
989				},
990				{
991					"include": "#object-types"
992				}
993			]
994		},
995		"method-call": {
996			"begin": "(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()",
997			"beginCaptures": {
998				"1": {
999					"name": "punctuation.separator.period.java"
1000				},
1001				"2": {
1002					"name": "entity.name.function.java"
1003				},
1004				"3": {
1005					"name": "punctuation.definition.parameters.begin.bracket.round.java"
1006				}
1007			},
1008			"end": "\\)",
1009			"endCaptures": {
1010				"0": {
1011					"name": "punctuation.definition.parameters.end.bracket.round.java"
1012				}
1013			},
1014			"name": "meta.method-call.java",
1015			"patterns": [
1016				{
1017					"include": "#code"
1018				}
1019			]
1020		},
1021		"methods": {
1022			"begin": "(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()",
1023			"end": "(})|(?=;)",
1024			"endCaptures": {
1025				"1": {
1026					"name": "punctuation.section.method.end.bracket.curly.java"
1027				}
1028			},
1029			"name": "meta.method.java",
1030			"patterns": [
1031				{
1032					"include": "#storage-modifiers"
1033				},
1034				{
1035					"begin": "(\\w+)\\s*(\\()",
1036					"beginCaptures": {
1037						"1": {
1038							"name": "entity.name.function.java"
1039						},
1040						"2": {
1041							"name": "punctuation.definition.parameters.begin.bracket.round.java"
1042						}
1043					},
1044					"end": "\\)",
1045					"endCaptures": {
1046						"0": {
1047							"name": "punctuation.definition.parameters.end.bracket.round.java"
1048						}
1049					},
1050					"name": "meta.method.identifier.java",
1051					"patterns": [
1052						{
1053							"include": "#parameters"
1054						},
1055						{
1056							"include": "#parens"
1057						},
1058						{
1059							"include": "#comments"
1060						}
1061					]
1062				},
1063				{
1064					"include": "#generics"
1065				},
1066				{
1067					"begin": "(?=\\w.*\\s+\\w+\\s*\\()",
1068					"end": "(?=\\s+\\w+\\s*\\()",
1069					"name": "meta.method.return-type.java",
1070					"patterns": [
1071						{
1072							"include": "#all-types"
1073						},
1074						{
1075							"include": "#parens"
1076						},
1077						{
1078							"include": "#comments"
1079						}
1080					]
1081				},
1082				{
1083					"include": "#throws"
1084				},
1085				{
1086					"begin": "{",
1087					"beginCaptures": {
1088						"0": {
1089							"name": "punctuation.section.method.begin.bracket.curly.java"
1090						}
1091					},
1092					"end": "(?=})",
1093					"contentName": "meta.method.body.java",
1094					"patterns": [
1095						{
1096							"include": "#code"
1097						}
1098					]
1099				},
1100				{
1101					"include": "#comments"
1102				}
1103			]
1104		},
1105		"module": {
1106			"begin": "((open)\\s)?(module)\\s+(\\w+)",
1107			"end": "}",
1108			"beginCaptures": {
1109				"1": {
1110					"name": "storage.modifier.java"
1111				},
1112				"3": {
1113					"name": "storage.modifier.java"
1114				},
1115				"4": {
1116					"name": "entity.name.type.module.java"
1117				}
1118			},
1119			"endCaptures": {
1120				"0": {
1121					"name": "punctuation.section.module.end.bracket.curly.java"
1122				}
1123			},
1124			"name": "meta.module.java",
1125			"patterns": [
1126				{
1127					"begin": "{",
1128					"beginCaptures": {
1129						"0": {
1130							"name": "punctuation.section.module.begin.bracket.curly.java"
1131						}
1132					},
1133					"end": "(?=})",
1134					"contentName": "meta.module.body.java",
1135					"patterns": [
1136						{
1137							"include": "#comments"
1138						},
1139						{
1140							"include": "#comments-javadoc"
1141						},
1142						{
1143							"match": "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
1144							"name": "keyword.module.java"
1145						}
1146					]
1147				}
1148			]
1149		},
1150		"numbers": {
1151			"patterns": [
1152				{
1153					"match": "(?x)\n\\b(?<!\\$)\n0(x|X)\n(\n  (?<!\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\.)\n  |\n  (\n    [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\.?\n    |\n    ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\n  )\n  [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\n)\n\\b(?!\\$)",
1154					"name": "constant.numeric.hex.java"
1155				},
1156				{
1157					"match": "\\b(?<!\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\b(?!\\$)",
1158					"name": "constant.numeric.binary.java"
1159				},
1160				{
1161					"match": "\\b(?<!\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\b(?!\\$)",
1162					"name": "constant.numeric.octal.java"
1163				},
1164				{
1165					"match": "(?x)\n(?<!\\$)\n(\n  \\b[0-9]([0-9_]*[0-9])?\\.\\B(?!\\.)\n  |\n  \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n  |\n  \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n  |\n  \\b[0-9]([0-9_]*[0-9])?\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n  |\n  (?<!\\.)\\B\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n  |\n  \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n  |\n  \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n  |\n  \\b(0|[1-9]([0-9_]*[0-9])?)(?!\\.)[Ll]?\\b\n)\n(?!\\$)",
1166					"name": "constant.numeric.decimal.java"
1167				}
1168			]
1169		},
1170		"object-types": {
1171			"patterns": [
1172				{
1173					"include": "#generics"
1174				},
1175				{
1176					"begin": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*)([A-Z_]\\w*)\\s*(?=\\[)",
1177					"beginCaptures": {
1178						"1": {
1179							"patterns": [
1180								{
1181									"match": "[A-Za-z_]\\w*",
1182									"name": "storage.type.java"
1183								},
1184								{
1185									"match": "\\.",
1186									"name": "punctuation.separator.period.java"
1187								}
1188							]
1189						},
1190						"2": {
1191							"name": "storage.type.object.array.java"
1192						}
1193					},
1194					"end": "(?!\\s*\\[)",
1195					"patterns": [
1196						{
1197							"include": "#comments"
1198						},
1199						{
1200							"include": "#parens"
1201						}
1202					]
1203				},
1204				{
1205					"match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\s*(?=<)",
1206					"captures": {
1207						"1": {
1208							"patterns": [
1209								{
1210									"match": "[A-Za-z_]\\w*",
1211									"name": "storage.type.java"
1212								},
1213								{
1214									"match": "\\.",
1215									"name": "punctuation.separator.period.java"
1216								}
1217							]
1218						}
1219					}
1220				},
1221				{
1222					"match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\b((?=\\s*[A-Za-z$_\\n])|(?=\\s*\\.\\.\\.))",
1223					"captures": {
1224						"1": {
1225							"patterns": [
1226								{
1227									"match": "[A-Za-z_]\\w*",
1228									"name": "storage.type.java"
1229								},
1230								{
1231									"match": "\\.",
1232									"name": "punctuation.separator.period.java"
1233								}
1234							]
1235						}
1236					}
1237				}
1238			]
1239		},
1240		"object-types-inherited": {
1241			"patterns": [
1242				{
1243					"include": "#generics"
1244				},
1245				{
1246					"match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b",
1247					"name": "entity.other.inherited-class.java",
1248					"captures": {
1249						"1": {
1250							"name": "punctuation.separator.period.java"
1251						}
1252					}
1253				},
1254				{
1255					"match": ",",
1256					"name": "punctuation.separator.delimiter.java"
1257				}
1258			]
1259		},
1260		"objects": {
1261			"match": "(?<![\\w$])[a-zA-Z_$][\\w$]*(?=\\s*\\.\\s*[\\w$]+)",
1262			"name": "variable.other.object.java"
1263		},
1264		"parameters": {
1265			"patterns": [
1266				{
1267					"match": "\\bfinal\\b",
1268					"name": "storage.modifier.java"
1269				},
1270				{
1271					"include": "#annotations"
1272				},
1273				{
1274					"include": "#all-types"
1275				},
1276				{
1277					"include": "#strings"
1278				},
1279				{
1280					"match": "\\w+",
1281					"name": "variable.parameter.java"
1282				},
1283				{
1284					"match": ",",
1285					"name": "punctuation.separator.delimiter.java"
1286				},
1287				{
1288					"match": "\\.\\.\\.",
1289					"name": "punctuation.definition.parameters.varargs.java"
1290				}
1291			]
1292		},
1293		"parens": {
1294			"patterns": [
1295				{
1296					"begin": "\\(",
1297					"beginCaptures": {
1298						"0": {
1299							"name": "punctuation.bracket.round.java"
1300						}
1301					},
1302					"end": "\\)",
1303					"endCaptures": {
1304						"0": {
1305							"name": "punctuation.bracket.round.java"
1306						}
1307					},
1308					"patterns": [
1309						{
1310							"include": "#code"
1311						}
1312					]
1313				},
1314				{
1315					"begin": "\\[",
1316					"beginCaptures": {
1317						"0": {
1318							"name": "punctuation.bracket.square.java"
1319						}
1320					},
1321					"end": "\\]",
1322					"endCaptures": {
1323						"0": {
1324							"name": "punctuation.bracket.square.java"
1325						}
1326					},
1327					"patterns": [
1328						{
1329							"include": "#code"
1330						}
1331					]
1332				},
1333				{
1334					"begin": "{",
1335					"beginCaptures": {
1336						"0": {
1337							"name": "punctuation.bracket.curly.java"
1338						}
1339					},
1340					"end": "}",
1341					"endCaptures": {
1342						"0": {
1343							"name": "punctuation.bracket.curly.java"
1344						}
1345					},
1346					"patterns": [
1347						{
1348							"include": "#code"
1349						}
1350					]
1351				}
1352			]
1353		},
1354		"primitive-arrays": {
1355			"patterns": [
1356				{
1357					"begin": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b\\s*(?=\\[)",
1358					"beginCaptures": {
1359						"1": {
1360							"name": "storage.type.primitive.array.java"
1361						}
1362					},
1363					"end": "(?!\\s*\\[)",
1364					"patterns": [
1365						{
1366							"include": "#comments"
1367						},
1368						{
1369							"include": "#parens"
1370						}
1371					]
1372				}
1373			]
1374		},
1375		"primitive-types": {
1376			"match": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b",
1377			"name": "storage.type.primitive.java"
1378		},
1379		"properties": {
1380			"patterns": [
1381				{
1382					"match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)(?=\\s*\\.\\s*[a-zA-Z_$][\\w$]*)",
1383					"captures": {
1384						"1": {
1385							"name": "punctuation.separator.period.java"
1386						},
1387						"2": {
1388							"name": "variable.other.object.property.java"
1389						}
1390					}
1391				},
1392				{
1393					"match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)",
1394					"captures": {
1395						"1": {
1396							"name": "punctuation.separator.period.java"
1397						},
1398						"2": {
1399							"name": "variable.other.object.property.java"
1400						}
1401					}
1402				},
1403				{
1404					"match": "(\\.)\\s*([0-9][\\w$]*)",
1405					"captures": {
1406						"1": {
1407							"name": "punctuation.separator.period.java"
1408						},
1409						"2": {
1410							"name": "invalid.illegal.identifier.java"
1411						}
1412					}
1413				}
1414			]
1415		},
1416		"record": {
1417			"begin": "(?=\\w?[\\w\\s]*\\b(?:record)\\s+[\\w$]+)",
1418			"end": "}",
1419			"endCaptures": {
1420				"0": {
1421					"name": "punctuation.section.class.end.bracket.curly.java"
1422				}
1423			},
1424			"name": "meta.record.java",
1425			"patterns": [
1426				{
1427					"include": "#storage-modifiers"
1428				},
1429				{
1430					"include": "#generics"
1431				},
1432				{
1433					"include": "#comments"
1434				},
1435				{
1436					"begin": "(record)\\s+([\\w$]+)(<[\\w$]+>)?(\\()",
1437					"beginCaptures": {
1438						"1": {
1439							"name": "storage.modifier.java"
1440						},
1441						"2": {
1442							"name": "entity.name.type.record.java"
1443						},
1444						"3": {
1445							"patterns": [
1446								{
1447									"include": "#generics"
1448								}
1449							]
1450						},
1451						"4": {
1452							"name": "punctuation.definition.parameters.begin.bracket.round.java"
1453						}
1454					},
1455					"end": "\\)",
1456					"endCaptures": {
1457						"0": {
1458							"name": "punctuation.definition.parameters.end.bracket.round.java"
1459						}
1460					},
1461					"name": "meta.record.identifier.java",
1462					"patterns": [
1463						{
1464							"include": "#code"
1465						}
1466					]
1467				},
1468				{
1469					"begin": "(implements)\\s",
1470					"beginCaptures": {
1471						"1": {
1472							"name": "storage.modifier.implements.java"
1473						}
1474					},
1475					"end": "(?=\\s*\\{)",
1476					"name": "meta.definition.class.implemented.interfaces.java",
1477					"patterns": [
1478						{
1479							"include": "#object-types-inherited"
1480						},
1481						{
1482							"include": "#comments"
1483						}
1484					]
1485				},
1486				{
1487					"include": "#record-body"
1488				}
1489			]
1490		},
1491		"record-body": {
1492			"begin": "{",
1493			"beginCaptures": {
1494				"0": {
1495					"name": "punctuation.section.class.begin.bracket.curly.java"
1496				}
1497			},
1498			"end": "(?=})",
1499			"name": "meta.record.body.java",
1500			"patterns": [
1501				{
1502					"include": "#record-constructor"
1503				},
1504				{
1505					"include": "#class-body"
1506				}
1507			]
1508		},
1509		"record-constructor": {
1510			"begin": "(?!new)(?=[\\w<].*\\s+)(?=([^\\(=/]|/(?!/))+(?={))",
1511			"end": "(})|(?=;)",
1512			"endCaptures": {
1513				"1": {
1514					"name": "punctuation.section.method.end.bracket.curly.java"
1515				}
1516			},
1517			"name": "meta.method.java",
1518			"patterns": [
1519				{
1520					"include": "#storage-modifiers"
1521				},
1522				{
1523					"begin": "(\\w+)",
1524					"beginCaptures": {
1525						"1": {
1526							"name": "entity.name.function.java"
1527						}
1528					},
1529					"end": "(?=\\s*{)",
1530					"name": "meta.method.identifier.java",
1531					"patterns": [
1532						{
1533							"include": "#comments"
1534						}
1535					]
1536				},
1537				{
1538					"include": "#comments"
1539				},
1540				{
1541					"begin": "{",
1542					"beginCaptures": {
1543						"0": {
1544							"name": "punctuation.section.method.begin.bracket.curly.java"
1545						}
1546					},
1547					"end": "(?=})",
1548					"contentName": "meta.method.body.java",
1549					"patterns": [
1550						{
1551							"include": "#code"
1552						}
1553					]
1554				}
1555			]
1556		},
1557		"static-initializer": {
1558			"patterns": [
1559				{
1560					"include": "#anonymous-block-and-instance-initializer"
1561				},
1562				{
1563					"match": "static",
1564					"name": "storage.modifier.java"
1565				}
1566			]
1567		},
1568		"storage-modifiers": {
1569			"match": "\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\b",
1570			"name": "storage.modifier.java"
1571		},
1572		"strings": {
1573			"patterns": [
1574				{
1575					"begin": "\"",
1576					"beginCaptures": {
1577						"0": {
1578							"name": "punctuation.definition.string.begin.java"
1579						}
1580					},
1581					"end": "\"",
1582					"endCaptures": {
1583						"0": {
1584							"name": "punctuation.definition.string.end.java"
1585						}
1586					},
1587					"name": "string.quoted.double.java",
1588					"patterns": [
1589						{
1590							"match": "\\\\.",
1591							"name": "constant.character.escape.java"
1592						}
1593					]
1594				},
1595				{
1596					"begin": "'",
1597					"beginCaptures": {
1598						"0": {
1599							"name": "punctuation.definition.string.begin.java"
1600						}
1601					},
1602					"end": "'",
1603					"endCaptures": {
1604						"0": {
1605							"name": "punctuation.definition.string.end.java"
1606						}
1607					},
1608					"name": "string.quoted.single.java",
1609					"patterns": [
1610						{
1611							"match": "\\\\.",
1612							"name": "constant.character.escape.java"
1613						}
1614					]
1615				}
1616			]
1617		},
1618		"throws": {
1619			"begin": "throws",
1620			"beginCaptures": {
1621				"0": {
1622					"name": "storage.modifier.java"
1623				}
1624			},
1625			"end": "(?={|;)",
1626			"name": "meta.throwables.java",
1627			"patterns": [
1628				{
1629					"match": ",",
1630					"name": "punctuation.separator.delimiter.java"
1631				},
1632				{
1633					"match": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
1634					"name": "storage.type.java"
1635				}
1636			]
1637		},
1638		"try-catch-finally": {
1639			"patterns": [
1640				{
1641					"begin": "\\btry\\b",
1642					"beginCaptures": {
1643						"0": {
1644							"name": "keyword.control.try.java"
1645						}
1646					},
1647					"end": "}",
1648					"endCaptures": {
1649						"0": {
1650							"name": "punctuation.section.try.end.bracket.curly.java"
1651						}
1652					},
1653					"name": "meta.try.java",
1654					"patterns": [
1655						{
1656							"begin": "\\(",
1657							"beginCaptures": {
1658								"0": {
1659									"name": "punctuation.section.try.resources.begin.bracket.round.java"
1660								}
1661							},
1662							"end": "\\)",
1663							"endCaptures": {
1664								"0": {
1665									"name": "punctuation.section.try.resources.end.bracket.round.java"
1666								}
1667							},
1668							"name": "meta.try.resources.java",
1669							"patterns": [
1670								{
1671									"include": "#code"
1672								}
1673							]
1674						},
1675						{
1676							"begin": "{",
1677							"beginCaptures": {
1678								"0": {
1679									"name": "punctuation.section.try.begin.bracket.curly.java"
1680								}
1681							},
1682							"end": "(?=})",
1683							"contentName": "meta.try.body.java",
1684							"patterns": [
1685								{
1686									"include": "#code"
1687								}
1688							]
1689						}
1690					]
1691				},
1692				{
1693					"begin": "\\b(catch)\\b",
1694					"beginCaptures": {
1695						"1": {
1696							"name": "keyword.control.catch.java"
1697						}
1698					},
1699					"end": "}",
1700					"endCaptures": {
1701						"0": {
1702							"name": "punctuation.section.catch.end.bracket.curly.java"
1703						}
1704					},
1705					"name": "meta.catch.java",
1706					"patterns": [
1707						{
1708							"include": "#comments"
1709						},
1710						{
1711							"begin": "\\(",
1712							"beginCaptures": {
1713								"0": {
1714									"name": "punctuation.definition.parameters.begin.bracket.round.java"
1715								}
1716							},
1717							"end": "\\)",
1718							"endCaptures": {
1719								"0": {
1720									"name": "punctuation.definition.parameters.end.bracket.round.java"
1721								}
1722							},
1723							"contentName": "meta.catch.parameters.java",
1724							"patterns": [
1725								{
1726									"include": "#comments"
1727								},
1728								{
1729									"include": "#storage-modifiers"
1730								},
1731								{
1732									"begin": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
1733									"beginCaptures": {
1734										"0": {
1735											"name": "storage.type.java"
1736										}
1737									},
1738									"end": "(\\|)|(?=\\))",
1739									"endCaptures": {
1740										"1": {
1741											"name": "punctuation.catch.separator.java"
1742										}
1743									},
1744									"patterns": [
1745										{
1746											"include": "#comments"
1747										},
1748										{
1749											"match": "\\w+",
1750											"captures": {
1751												"0": {
1752													"name": "variable.parameter.java"
1753												}
1754											}
1755										}
1756									]
1757								}
1758							]
1759						},
1760						{
1761							"begin": "{",
1762							"beginCaptures": {
1763								"0": {
1764									"name": "punctuation.section.catch.begin.bracket.curly.java"
1765								}
1766							},
1767							"end": "(?=})",
1768							"contentName": "meta.catch.body.java",
1769							"patterns": [
1770								{
1771									"include": "#code"
1772								}
1773							]
1774						}
1775					]
1776				},
1777				{
1778					"begin": "\\bfinally\\b",
1779					"beginCaptures": {
1780						"0": {
1781							"name": "keyword.control.finally.java"
1782						}
1783					},
1784					"end": "}",
1785					"endCaptures": {
1786						"0": {
1787							"name": "punctuation.section.finally.end.bracket.curly.java"
1788						}
1789					},
1790					"name": "meta.finally.java",
1791					"patterns": [
1792						{
1793							"begin": "{",
1794							"beginCaptures": {
1795								"0": {
1796									"name": "punctuation.section.finally.begin.bracket.curly.java"
1797								}
1798							},
1799							"end": "(?=})",
1800							"contentName": "meta.finally.body.java",
1801							"patterns": [
1802								{
1803									"include": "#code"
1804								}
1805							]
1806						}
1807					]
1808				}
1809			]
1810		},
1811		"variables": {
1812			"begin": "(?x)\n(?=\n  \\b\n  (\n    (void|boolean|byte|char|short|int|float|long|double)\n    |\n    (?>(\\w+\\.)*[A-Z_]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n  )\n  \\b\n  \\s*\n  (\n    <[\\w<>,\\.?\\s\\[\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\n  )?\n  \\s*\n  (\n    (\\[\\])* # int[][]\n  )?\n  \\s+\n  [A-Za-z_$][\\w$]* # At least one identifier after space\n  ([\\w\\[\\],$][\\w\\[\\],\\s]*)? # possibly primitive array or additional identifiers\n  \\s*(=|:|;)\n)",
1813			"end": "(?=\\=|:|;)",
1814			"name": "meta.definition.variable.java",
1815			"patterns": [
1816				{
1817					"match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))",
1818					"captures": {
1819						"1": {
1820							"name": "variable.other.definition.java"
1821						}
1822					}
1823				},
1824				{
1825					"include": "#all-types"
1826				},
1827				{
1828					"include": "#code"
1829				}
1830			]
1831		},
1832		"variables-local": {
1833			"begin": "(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))",
1834			"end": "(?=\\=|:|;)",
1835			"name": "meta.definition.variable.local.java",
1836			"patterns": [
1837				{
1838					"match": "\\bvar\\b",
1839					"name": "storage.type.local.java"
1840				},
1841				{
1842					"match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))",
1843					"captures": {
1844						"1": {
1845							"name": "variable.other.definition.java"
1846						}
1847					}
1848				},
1849				{
1850					"include": "#code"
1851				}
1852			]
1853		}
1854	}
1855}