<?xml version="1.0"?>
<!-- Scala mode by Daniel Spiewak downloaded on 2015-05-17 from https://github.com/djspiewak/jedit-modes/blob/master/scala.xml -->

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<MODE>
  <PROPS>
    <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
    <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
    <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
  <PROPERTY NAME="indentNextLine"
    VALUE="(.*((if|while|else\s+if|for)\s*\().*\)|\s*else|\s*case.*=>|.*(def|val|var|type).*=)\s*$"/>
    <!-- set this to 'true' if you want to use GNU coding style -->
    <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
    <PROPERTY NAME="commentStart" VALUE="/*" />
    <PROPERTY NAME="commentEnd" VALUE="*/" />
    <PROPERTY NAME="lineComment" VALUE="//" />
    <PROPERTY NAME="noTabs" VALUE="true" />
    <PROPERTY NAME="tabSize" VALUE="2" />
    <PROPERTY NAME="indentSize" VALUE="2" />
    <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
  </PROPS>

  <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
      DIGIT_RE="(0[lL]?|[1-9]\d{0,9}(\d{0,9}[lL])?|0[xX]\p{XDigit}{1,8}(\p{XDigit}{0,8}[lL])?|0[0-7]{1,11}([0-7]{0,11}[lL])?|([0-9]+\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?|[0-9]+([eE][+-]?[0-9]+[fFdD]?|([eE][+-]?[0-9]+)?[fFdD]))">

  <MARK_FOLLOWING TYPE="LABEL">@</MARK_FOLLOWING>

  <IMPORT DELEGATE="PRIMARY"/>
  </RULES>

  <RULES SET="PRIMARY">
    <!-- Silly comment -->
    <SEQ TYPE="COMMENT1">/**/</SEQ>

    <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>

    <!-- Scaladoc comment -->
    <SPAN TYPE="COMMENT3" DELEGATE="SCALADOC">
      <BEGIN>/**</BEGIN>
      <END>*/</END>
    </SPAN>

    <!-- Scala comment (Java style) -->
    <SPAN TYPE="COMMENT1" DELEGATE="COMMENT_BLOCK">
      <BEGIN>/*</BEGIN>
      <END>*/</END>
    </SPAN>

    <SPAN MATCH_TYPE="NULL" DELEGATE="MAIN">
      <BEGIN>{</BEGIN>
      <END>}</END>
    </SPAN>

    <!-- XML literals; keep this in sync with the XML_LITERAL rule set! -->
    <IMPORT DELEGATE="XML_SHARED"/>

    <!-- interpolated stuff -->
    <SPAN_REGEXP DELEGATE="STRING" MATCH_TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="">
      <BEGIN>[0-9a-zA-Z&gt;&lt;=+]([0-9a-zA-Z&gt;&lt;=+]|_[0-9a-zA-Z&gt;&lt;=+])*"""</BEGIN>
      <END>"""</END>
    </SPAN_REGEXP>
    <SPAN_REGEXP DELEGATE="STRING" MATCH_TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="\">
      <BEGIN>[0-9a-zA-Z&gt;&lt;=+]([0-9a-zA-Z&gt;&lt;=+]|_[0-9a-zA-Z&gt;&lt;=+])*"</BEGIN>
      <END>"</END>
    </SPAN_REGEXP>

    <!-- string and character literals -->
    <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="">
      <BEGIN>"""</BEGIN>
      <END>"""</END>
    </SPAN>
    <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
      <BEGIN>"</BEGIN>
      <END>"</END>
    </SPAN>
  <SEQ_REGEXP HASH_CHAR="'" TYPE="LITERAL1">'([^'\\]|\\.)'</SEQ_REGEXP>

    <!-- symbol literals -->
    <SEQ_REGEXP HASH_CHAR="'" TYPE="LABEL">'[0-9a-zA-Z&gt;&lt;=+]([0-9a-zA-Z&gt;&lt;=+]|_[0-9a-zA-Z&gt;&lt;=+])*</SEQ_REGEXP>

    <SPAN MATCH_TYPE="LITERAL3" DELEGATE="TYPE_PARAMS">
    <BEGIN>[</BEGIN>
    <END>]</END>
  </SPAN>

  <SPAN MATCH_TYPE="NULL">
    <BEGIN>`</BEGIN>
    <END>`</END>
  </SPAN>

    <SEQ TYPE="OPERATOR">(</SEQ>
    <SEQ TYPE="OPERATOR">)</SEQ>
    <SEQ TYPE="OPERATOR">}</SEQ>
    <SEQ TYPE="OPERATOR">{</SEQ>
    <SEQ TYPE="NULL">.</SEQ>
    <SEQ TYPE="NULL">,</SEQ>
    <SEQ TYPE="NULL">;</SEQ>
    <SEQ TYPE="NULL">:</SEQ>

    <!-- Function calls -->
    <!-- <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS> -->

    <EOL_SPAN MATCH_TYPE="KEYWORD1" DELEGATE="TYPE">import </EOL_SPAN>

  <!-- Function declarations (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">def </MARK_FOLLOWING>

  <!-- class declarations (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">class </MARK_FOLLOWING>

  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case class </MARK_FOLLOWING>

  <!-- instantiations (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">new </MARK_FOLLOWING>

  <!-- object declarations (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">object </MARK_FOLLOWING>

  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">case object </MARK_FOLLOWING>

  <!-- trait declarations (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD3" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">trait </MARK_FOLLOWING>

  <!-- extends (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">extends </MARK_FOLLOWING>

  <!-- with (overloaded for different spacing styles)-->
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with       </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with      </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with     </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with    </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with   </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with  </MARK_FOLLOWING>
  <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE">with </MARK_FOLLOWING>

  <SPAN DELEGATE="PATTERN" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE">
    <BEGIN>case </BEGIN>
    <END>=&gt;</END>
  </SPAN>

  <SPAN DELEGATE="PATTERN" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
    <BEGIN>val </BEGIN>
    <END>=</END>
  </SPAN>

    <KEYWORDS>
      <KEYWORD1>abstract</KEYWORD1>
      <KEYWORD1>case</KEYWORD1>
      <KEYWORD1>catch</KEYWORD1>
      <KEYWORD1>class</KEYWORD1>
      <KEYWORD1>def</KEYWORD1>
      <KEYWORD1>do</KEYWORD1>
      <KEYWORD1>else</KEYWORD1>
      <KEYWORD1>extends</KEYWORD1>
      <KEYWORD1>final</KEYWORD1>
      <KEYWORD1>finally</KEYWORD1>
      <KEYWORD1>for</KEYWORD1>
      <KEYWORD1>forSome</KEYWORD1>
      <KEYWORD1>if</KEYWORD1>
      <KEYWORD1>implicit</KEYWORD1>
      <KEYWORD1>import</KEYWORD1>
      <KEYWORD1>lazy</KEYWORD1>
      <KEYWORD1>macro</KEYWORD1>
      <KEYWORD1>match</KEYWORD1>
      <KEYWORD1>new</KEYWORD1>
      <KEYWORD1>object</KEYWORD1>
      <KEYWORD1>override</KEYWORD1>
      <KEYWORD1>package</KEYWORD1>
      <KEYWORD1>private</KEYWORD1>
      <KEYWORD1>protected</KEYWORD1>
      <KEYWORD1>requires</KEYWORD1>
      <KEYWORD1>return</KEYWORD1>
      <KEYWORD1>sealed</KEYWORD1>
      <KEYWORD1>throw</KEYWORD1>
      <KEYWORD1>trait</KEYWORD1>
      <KEYWORD1>try</KEYWORD1>
      <KEYWORD1>type</KEYWORD1>
      <KEYWORD1>val</KEYWORD1>
      <KEYWORD1>var</KEYWORD1>
      <KEYWORD1>with</KEYWORD1>
      <KEYWORD1>while</KEYWORD1>
      <KEYWORD1>yield</KEYWORD1>
      <KEYWORD1>=&gt;</KEYWORD1>

      <!-- java.lang.* wrapper types -->
      <KEYWORD2>Character</KEYWORD2>
      <KEYWORD2>Integer</KEYWORD2>

      <!-- scala.* primitive types -->
      <KEYWORD2>Boolean</KEYWORD2>
      <KEYWORD2>Byte</KEYWORD2>
      <KEYWORD2>Char</KEYWORD2>
      <KEYWORD2>Double</KEYWORD2>
      <KEYWORD2>Float</KEYWORD2>
      <KEYWORD2>Int</KEYWORD2>
      <KEYWORD2>Long</KEYWORD2>
      <KEYWORD2>Short</KEYWORD2>
      <KEYWORD2>Unit</KEYWORD2>

      <!-- scala.* predefined types -->
      <KEYWORD3>Any</KEYWORD3>
      <KEYWORD3>AnyRef</KEYWORD3>
      <KEYWORD3>Nothing</KEYWORD3>

    <LITERAL2>false</LITERAL2>
    <LITERAL2>null</LITERAL2>
    <LITERAL2>super</LITERAL2>
    <LITERAL2>this</LITERAL2>
    <LITERAL2>true</LITERAL2>

    <INVALID>???</INVALID>

    <!-- reserved -->
    <INVALID>then</INVALID>
    </KEYWORDS>
  </RULES>

  <RULES SET="TYPE_PARAMS" DEFAULT="LITERAL3">
    <SPAN MATCH_TYPE="LITERAL3" DELEGATE="TYPE_PARAMS">
    <BEGIN>[</BEGIN>
    <END>]</END>
  </SPAN>
  </RULES>

  <RULES SET="PATTERN" DEFAULT="NULL" IGNORE_CASE="FALSE"
    DIGIT_RE="(0[lL]?|[1-9]\d{0,9}(\d{0,9}[lL])?|0[xX]\p{XDigit}{1,8}(\p{XDigit}{0,8}[lL])?|0[0-7]{1,11}([0-7]{0,11}[lL])?|([0-9]+\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?|[0-9]+([eE][+-]?[0-9]+[fFdD]?|([eE][+-]?[0-9]+)?[fFdD]))">

    <IMPORT DELEGATE="PRIMARY"/>

  <SEQ TYPE="OPERATOR">@</SEQ>

  <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD4">[A-Z][^(\s:@)\[\]]*</SEQ_REGEXP>
  </RULES>

  <RULES SET="COMMENT_BLOCK" DEFAULT="COMMENT1">
    <SPAN TYPE="COMMENT1" DELEGATE="COMMENT_BLOCK">
      <BEGIN>/*</BEGIN>
      <END>*/</END>
    </SPAN>
  </RULES>

  <RULES SET="SCALADOC" DEFAULT="COMMENT3" IGNORE_CASE="TRUE">
    <!-- so that @link{...} is highlighted -->
    <SEQ TYPE="COMMENT3">{</SEQ>

    <!-- so that *@param is highlighted -->
    <SEQ TYPE="COMMENT3">*</SEQ>

    <!-- Javadoc ignores tags inside <pre> -->
    <SPAN TYPE="MARKUP" DELEGATE="SCALADOC_PRE">
      <BEGIN>&lt;pre&gt;</BEGIN>
      <END>&lt;/pre&gt;</END>
    </SPAN>

    <!-- HTML comments -->
    <SPAN TYPE="COMMENT1">
      <BEGIN>&lt;!--</BEGIN>
      <END>--&gt;</END>
    </SPAN>

    <!-- HTML tags -->
    <SPAN_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" DELEGATE="xml::TAGS" NO_LINE_BREAK="TRUE">
      <BEGIN>&lt;/?[\da-zA-Z\-]+</BEGIN>
      <END>&gt;</END>
    </SPAN_REGEXP>

    <!-- Javadoc allows this -->
    <SEQ TYPE="COMMENT3">&lt;</SEQ>

    <KEYWORDS>
      <LABEL>@author</LABEL>
      <LABEL>@beaninfo</LABEL>
      <LABEL>@history</LABEL>
      <LABEL>@bug</LABEL>
      <LABEL>@review</LABEL>
      <LABEL>@todo</LABEL>
      <LABEL>@idea</LABEL>
      <LABEL>@pre</LABEL>
      <LABEL>@requires</LABEL>
      <LABEL>@post</LABEL>
      <LABEL>@ensures</LABEL>
      <LABEL>@generates</LABEL>
      <LABEL>@modifies</LABEL>
      <LABEL>@invariant</LABEL>
      <LABEL>@exception</LABEL>
      <LABEL>@hides</LABEL>
      <LABEL>@overrides</LABEL>
      <LABEL>@equivalent</LABEL>
      <LABEL>@bon</LABEL>
      <LABEL>@access</LABEL>
      <LABEL>@example</LABEL>
      <LABEL>@design</LABEL>
      <LABEL>@serial</LABEL>
      <LABEL>@references</LABEL>
      <LABEL>@uses</LABEL>
      <LABEL>@guard</LABEL>
      <LABEL>@values</LABEL>
      <LABEL>@complexity</LABEL>
      <LABEL>@deprecated</LABEL>
      <LABEL>@docRoot</LABEL>
      <LABEL>@exception</LABEL>
      <LABEL>@link</LABEL>
      <LABEL>@param</LABEL>
      <LABEL>@return</LABEL>
      <LABEL>@see</LABEL>
      <LABEL>@serialData</LABEL>
      <LABEL>@serialField</LABEL>
      <LABEL>@since</LABEL>
      <LABEL>@throws</LABEL>
      <LABEL>@version</LABEL>
      <LABEL>@spec</LABEL>
    </KEYWORDS>
  </RULES>

  <RULES SET="SCALADOC_PRE" DEFAULT="COMMENT3" />

  <RULES SET="XML_SHARED">
    <SPAN TYPE="COMMENT2">
      <BEGIN>&lt;!--</BEGIN>
      <END>--&gt;</END>
    </SPAN>

    <SPAN_REGEXP TYPE="LITERAL3" HASH_CHARS="&lt;">
      <BEGIN>&lt;\?[^\s]</BEGIN>
      <END>?&gt;</END>
    </SPAN_REGEXP>

    <SPAN MATCH_TYPE="LITERAL3" TYPE="COMMENT4">
      <BEGIN>&lt;![CDATA[</BEGIN>
      <END>]]&gt;</END>
    </SPAN>

    <SEQ_REGEXP HASH_CHAR="&lt;" TYPE="LITERAL3">&lt;([\d\w_\-:.]+)(\s+[\d\w_\-:.]+=('[^']*'|"[^"]*"))*\s*/\s*&gt;</SEQ_REGEXP>

    <SPAN_REGEXP DELEGATE="XML_LITERAL" HASH_CHAR="&lt;" MATCH_TYPE="LITERAL3" TYPE="NULL">
      <BEGIN>&lt;([\d\w_\-:.]+)(\s+[\d\w_\-:.]+=('[^']*'|"[^"]*"))*\s*&gt;</BEGIN>
      <END>&lt;/$1&gt;</END>
    </SPAN_REGEXP>
  </RULES>

  <!-- TODO find a way to highlight attribute names as LABEL, attribute values as LITERAL1 -->
  <RULES SET="XML_LITERAL" DEFAULT="COMMENT4">
    <PROPS>
    <PROPERTY NAME="commentStart" VALUE="&lt;!--" />
    <PROPERTY NAME="commentEnd" VALUE="--&gt;" />
    <PROPERTY NAME="lineComment" VALUE="" />
    </PROPS>

    <IMPORT DELEGATE="XML_SHARED"/>

    <SPAN DELEGATE="MAIN">
      <BEGIN>{</BEGIN>
      <END>}</END>
    </SPAN>

    <SPAN TYPE="LABEL" NO_WORD_BREAK="TRUE">
      <BEGIN>&amp;</BEGIN>
      <END>;</END>
    </SPAN>

    <SEQ_REGEXP HASH_CHAR="&lt;" TYPE="INVALID">&lt;/[\d\w_\-:.]+&gt;</SEQ_REGEXP>		<!-- unmatched closing tags -->
  </RULES>

  <RULES SET="STRING" DEFAULT="LITERAL1">
    <SEQ TYPE="LITERAL1">$$</SEQ>

    <SPAN DELEGATE="MAIN">
      <BEGIN>${</BEGIN>
      <END>}</END>
    </SPAN>

    <MARK_FOLLOWING TYPE="NULL" MATCH_TYPE="NULL">$</MARK_FOLLOWING>
  </RULES>

  <RULES SET="TYPE" DEFAULT="KEYWORD4">
    <IMPORT DELEGATE="MAIN"/>
  </RULES>
</MODE>

