anchor.diff:  
   program
   scope StmtScope;
  -@init { $StmtScope::insideTarget = False }
  +@init {
  +    $StmtScope::insideTarget = False
  +    $StmtScope::insideConfig = False
  +}
       : introductory_stmt* stmt* EOF -> ^(PROGRAM introductory_stmt* stmt*);
   
   stmt
  +    : stmt_always_allowed
  +    | {$StmtScope::insideTarget}?=> stmt_inside_target
  +    // {$StmtScope::insideConfig}?=> ...nothing extra here...
  +    | {not $StmtScope::insideTarget and not $StmtScope::insideConfig}?=> stmt_global_scope
  +    | ';' -> // empty statement
  +    ;
  +
  +// statements allowed in any context
  +stmt_always_allowed
       : assignment_stmt
  -    | {$StmtScope::insideTarget}?=> stmt_inside_target
  -    | {not $StmtScope::insideTarget}?=> stmt_outside_target
       | if_stmt
  -    | ';' -> // empty statement
       ;
   
   // statements only allowed outside target definition:
  -stmt_outside_target
  +stmt_global_scope
       : target_stmt
       | submodule_stmt
       | import_stmt
  
positive.code:     | ':' literal  -> ^(BASE_LIST literal)
      ;
  
  configuration_content : '{' assignment_stmt* '}' -> assignment_stmt*;
  
  
  // ---------------------------------------------------------------------------
  
negative.code: 
  scope StmtScope {
      insideTarget;
      insideConfig;
  }
  
  
  