<?xml version="1.0" encoding="UTF-8"?>
<templateSet group="other">
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.inst"
            name="inst" toReformat="true" toShortenFQNames="true" value="if ($EXPR$ instanceof $TYPE$) {&#13;&#10;  $TYPE$ $VAR1$ = ($TYPE$)$EXPR$;&#13;&#10;  $END$&#13;&#10;}">
    <variable alwaysStopAt="true" defaultValue="expr" expression="variableOfType(&quot;Object&quot;)" name="EXPR" />
    <variable alwaysStopAt="true" defaultValue="" expression="&quot;Object&quot;" name="TYPE" />
    <variable alwaysStopAt="true" defaultValue="" expression="suggestVariableName()" name="VAR1" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.lst"
            name="lst" toReformat="true" toShortenFQNames="true" value="$ARRAY$[$ARRAY$.length - 1]">
    <variable alwaysStopAt="true" defaultValue="array" expression="arrayVariable()" name="ARRAY" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_EXPRESSION" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_EXPRESSION" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.mn"
            name="mn" toReformat="true" toShortenFQNames="true" value="$VAR$ = Math.min($VAR$, $END$);">
    <variable alwaysStopAt="true" defaultValue="" expression="variableOfType(&quot;double&quot;)" name="VAR" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.mx"
            name="mx" toReformat="true" toShortenFQNames="true" value="$VAR$ = Math.max($VAR$, $END$);">
    <variable alwaysStopAt="true" defaultValue="" expression="variableOfType(&quot;double&quot;)" name="VAR" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.psvm"
            name="psvm" toReformat="true" toShortenFQNames="true" value="public static void main(String[] args){&#13;&#10;  $END$&#13;&#10;}">
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_DECLARATION" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_DECLARATION" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.toar"
            name="toar" toReformat="true" toShortenFQNames="true" value="$COLLECTION$.toArray(new $COMPONENT_TYPE$[$COLLECTION$.size()])$END$">
    <variable alwaysStopAt="true" defaultValue="&quot;Object&quot;" expression="componentTypeOf(expectedType())" name="COMPONENT_TYPE" />
    <variable alwaysStopAt="true" defaultValue="collection" expression="variableOfType(&quot;java.util.Collection&quot;)" name="COLLECTION" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_EXPRESSION" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.lazy"
            name="lazy" value="if ($VAR$ == null) {&#10;  $VAR$ = new $TYPE$($END$);&#10;}" toReformat="true" toShortenFQNames="true">
    <variable name="VAR" expression="variableOfType(&quot;java.lang.Object&quot;)" defaultValue="" alwaysStopAt="true" />
    <variable name="TYPE" expression="subtypes(typeOfVariable(VAR))" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.if.not.null"
            name="inn" value="if ($VAR$ != null) {&#10;$END$&#10;}" toReformat="true" toShortenFQNames="true">
    <variable name="VAR" expression="suggestFirstVariableName(&quot;Object&quot;)" defaultValue="var" alwaysStopAt="true" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.if.null"
            name="ifn" value="if ($VAR$ == null) {&#10;$END$&#10;}" toReformat="true" toShortenFQNames="true">
    <variable name="VAR" expression="suggestFirstVariableName(&quot;Object&quot;)" defaultValue="var" alwaysStopAt="true" />
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_STATEMENT" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_STATEMENT" value="true" />
    </context>
  </template>
  <template resource-bundle="messages.CodeInsightBundle" key="livetemplate.description.geti"
            name="geti" toReformat="true" toShortenFQNames="true" value="public static $CLASS_NAME$ getInstance() {&#13;&#10;  return $VALUE$;&#13;&#10;}">
    <variable name="CLASS_NAME" expression="className" defaultValue="" alwaysStopAt="false"/>
    <variable name="VALUE" expression="variableOfType(CLASS_NAME)" defaultValue="null" alwaysStopAt="true"/>
    <context>
      <option name="JAVA_CODE" value="false" />
      <option name="JAVA_DECLARATION" value="true" />
      <option name="GROOVY" value="false" />
      <option name="GROOVY_DECLARATION" value="true" />
    </context>
  </template>
</templateSet>
