anchor.diff:      |   Slash      { this.isRegexAllowed() && _input.LA(1) != '*' }?
                    SlashyStringCharacter+?       Slash
   
  -    |   '"""'    TdqStringCharacter*?          '"""'
  -    |   '\'\'\'' TsqStringCharacter*?          '\'\'\''
  -    |   '$/'     DollarSlashyStringCharacter+? '/$'
  +    |   TdqStringQuotationMark    TdqStringCharacter*?          TdqStringQuotationMark
  +    |   TsqStringQuotationMark TsqStringCharacter*?          TsqStringQuotationMark
  +    |   DollarSlashyGStringQuotationMarkBegin     DollarSlashyStringCharacter+? DollarSlashyGStringQuotationMarkEnd
       ;
   
   // Groovy gstring
  
positive.code:     ;
  
  fragment
  DollarSlashEscape
      :   Dollar Slash Dollar
      ;
  
  fragment
  DollarDollarEscape
      :   Dollar Dollar
      ;
  // §3.10.7 The Null Literal
  
  NullLiteral
      :   'null'
      ;
  
negative.code: 
  mode TDQ_GSTRING_MODE;
  TdqGStringEnd
      :   TdqStringQuotationMark    -> type(GStringEnd), popMode
      ;
  TdqGStringPart
      :   Dollar   -> type(GStringPart), pushMode(GSTRING_TYPE_SELECTOR_MODE)
  