<NME> ModulesEffect.txt
<BEF> Elm File
  ElmModuleDeclaration(MODULE_DECLARATION)
    PsiElement(EFFECT_MODULE)('effect module')
    PsiWhiteSpace(' ')
    ElmUpperCaseQID(UPPER_CASE_QID)
      PsiElement(UPPER_CASE_IDENTIFIER)('Time')
    PsiElement(WHERE)('where')
    PsiWhiteSpace(' ')
    ElmRecordExpr(RECORD_EXPR)
      PsiElement(LEFT_BRACE)('{')
      PsiWhiteSpace(' ')
      ElmField(FIELD)
        PsiElement(LOWER_CASE_IDENTIFIER)('subscription')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        ElmValueExpr(VALUE_EXPR)
          ElmUpperCaseQID(UPPER_CASE_QID)
            PsiElement(UPPER_CASE_IDENTIFIER)('MySub')
      PsiWhiteSpace(' ')
      PsiElement(RIGHT_BRACE)('}')
    PsiWhiteSpace(' ')
    ElmExposingList(EXPOSING_LIST)
      PsiElement(EXPOSING)('exposing')
      PsiWhiteSpace(' ')
      PsiElement(LEFT_PARENTHESIS)('(')
      ElmExposedValue(EXPOSED_VALUE)
        PsiElement(LOWER_CASE_IDENTIFIER)('now')
      PsiElement(RIGHT_PARENTHESIS)(')')
<MSG> Revert "Don't synthesize layout tokens in the header"

Turns out that this was a bad idea. We SHOULD guard against
whitespace before the module declaration, but the virtual
delimiters are still needed in the import section.

This reverts commit ac095b93f99901564f9e85384fbe5dc5ef4054dd.

<DFF> @@ -1,6 +1,9 @@
 Elm File
   ElmModuleDeclaration(MODULE_DECLARATION)
-    PsiElement(EFFECT_MODULE)('effect module')
+    ElmEffect(EFFECT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('effect')
+    PsiWhiteSpace(' ')
+    PsiElement(MODULE)('module')
     PsiWhiteSpace(' ')
     ElmUpperCaseQID(UPPER_CASE_QID)
       PsiElement(UPPER_CASE_IDENTIFIER)('Time')

Revert "Don't synthesize layout tokens in the header"