úÎ=•None+Labels are either strings (identifiers) or empty (see 12.12 of  the spec) 9Annotates statements with their label sets; example use: +let jsa = reannotate (\a -> (a, Set.empty))Iin annotateLabelSets jsa snd (\labs (a, ls) -> (a, labs `Set.union` ls)) 12 ECMA262: the production  Identifier :  Statement is  evaluated by adding  Identifier to the label ser of  Statement  and then evluating  Statement . If the LabelledStatement itsef E has a non-empty label set, these labels are also added to the label  set of  Statement2 before evaluating it. ... Prior to evaluation of  a LabelledStatement, the contained  Statement is regarded as 0 possessing an empty label set, unless it is an IterationStatement  or a SwitchStatement-, in which case it is regarded as possessing / a label set consisting of the single element, empty. annotation read function annotation write function the script to annotate     Safe-InferredFThe statically-determinate lexical structure of a JavaScript program. EIntermediate data structure that contains locally declared names and  all references to identifers.  enclosing environment !local environment and references #environment and global definitions browser/testing environment           language-ecmascript-analysis-0.9&Language.ECMAScript3.Analysis.LabelSet0Language.ECMAScript3.Analysis.LexicalEnvironmentLabel EmptyLabelannotateLabelSetsEnvTreeenv localVarsannotateStatementannotateFuncStmtBodiesannotateFuncExprBodiesid2LabelPartial partialLocalspartialReferences partialNestedemptyrefdeclnestunions javascriptlvalueexpr caseClause catchClausevarDeclforInit forInInitstmt makeEnvTree