<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--
/*******************************************************************************
 * Copyright (c) 2019, 2020 Nicolaj Hoess.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Nicolaj Hoess - initial API and implementation
 *******************************************************************************/
-->

<templates>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.beg" context="postfix" deleted="false" description="%PostfixTemplates.beg" enabled="true" name="beg">${}${inner_expression}${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.cast" context="postfix" deleted="false" description="%PostfixTemplates.cast" enabled="true" name="cast">((${})${inner_expression})${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.dowhile" context="postfix" deleted="false" description="%PostfixTemplates.dowhile" enabled="true" name="dowhile">do {&#13;
	${cursor}&#13;
} while (${i:inner_expression(boolean)});</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.else" context="postfix" deleted="false" description="%PostfixTemplates.else" enabled="true" name="else">if (!${i:inner_expression(boolean)}${}) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.for" context="postfix" deleted="false" description="%PostfixTemplates.for" enabled="true" name="for">for (${type:newActualType(i)} ${n:newName(i)} : ${i:inner_expression(java.util.Collection,array)}) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.fori" context="postfix" deleted="false" description="%PostfixTemplates.fori" enabled="true" name="fori">for (int ${index} = 0; i &lt; ${i:inner_expression(array)}.length; ${index}++) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.foriub" context="postfix" deleted="false" description="%PostfixTemplates.foriub" enabled="true" name="foriub">for (int ${index} = 0; i &lt; ${i:inner_expression(int)}; ${index}++) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.forrlb" context="postfix" deleted="false" description="%PostfixTemplates.forrlb" enabled="true" name="forrlb">for (int ${index} = ${i:inner_expression(int)} - 1; i &gt;= 0 ; ${index}--) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.forr" context="postfix" deleted="false" description="%PostfixTemplates.forr" enabled="true" name="forr">for (int ${index} = ${i:inner_expression(array)}.length - 1; i &gt;= 0; ${index}--) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.nnull" context="postfix" deleted="false" description="%PostfixTemplates.nnull" enabled="true" name="nnull">if (${i:inner_expression(java.lang.Object,array)} != null) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.null" context="postfix" deleted="false" description="%PostfixTemplates.null" enabled="true" name="null">if (${i:inner_expression(java.lang.Object,array)} == null) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.sif" context="postfix" deleted="false" description="%PostfixTemplates.sif" enabled="true" name="sif">((${i:inner_expression(boolean)}) ? ${} : ${cursor})</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.snnull" context="postfix" deleted="false" description="%PostfixTemplates.snnull" enabled="true" name="snnull">(${i:inner_expression(java.lang.Object,array)} != null) ? ${inner_expression}${} : ${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.snull" context="postfix" deleted="false" description="%PostfixTemplates.snull" enabled="true" name="snull">(${i:inner_expression(java.lang.Object,array)} == null) ? ${} : ${inner_expression}${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.sysout" context="postfix" deleted="false" description="%PostfixTemplates.sysout" enabled="true" name="sysout">System.out.println(${i:inner_expression(java.lang.String)}${});${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.throw" context="postfix" deleted="false" description="%PostfixTemplates.throw" enabled="true" name="throw">throw ${true:inner_expression(java.lang.Throwable)};</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.var" context="postfix" deleted="false" description="%PostfixTemplates.var" enabled="true" name="var">${field:newType(inner_expression)} ${var:newName(inner_expression)} = ${inner_expression};${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.while" context="postfix" deleted="false" description="%PostfixTemplates.while" enabled="true" name="while">while (${i:inner_expression(boolean)}) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.withinregion" context="postfix" deleted="false" description="%PostfixTemplates.withinregion" enabled="true" name="withinregion">if (${i:inner_expression(float,int,double,long)} &gt;= ${lower_bound} &amp;&amp; ${inner_expression} &lt;= ${upper_bound}) {&#13;
	${cursor}&#13;
}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.field" context="postfix" deleted="false" description="%PostfixTemplates.field" enabled="true" name="field">${field:newField(i)} = ${i:inner_expression};${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.constpriv" context="postfix" deleted="false" description="%PostfixTemplates.constpriv" enabled="true" name="constpriv">${n:newField(i, false, true, true, true)}${i:inner_expression(novalue)}${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.constpub" context="postfix" deleted="false" description="%PostfixTemplates.constpub" enabled="true" name="constpub">${n:newField(i, true, true, true, true)}${i:inner_expression(novalue)}${cursor}</template>

	<template autoinsert="true" id="org.eclipse.jdt.postfixcompletion.stream" context="postfix" deleted="false" description="%PostfixTemplates.stream" enabled="true" name="stream">Stream.of(${i:inner_expression(array)})${cursor}</template>

</templates>
