anchor.diff:    | VarAs of name : string * expr : string * as_type : string
     | CheckNull of var_name : string
     | CustomCheck of condition : string
  -  | Iterate of var_name : string * tmp_var_name : string * expr:BasicExpression<Keyword, Var, Literal, Position, TypeInference.TypeAnnotation> * path : Path
  -  | Compare of comparison : Keyword * expr1:BasicExpression<Keyword, Var, Literal, Position, TypeInference.TypeAnnotation> * expr2:BasicExpression<Keyword, Var, Literal, Position, TypeInference.TypeAnnotation>
  -  | Inline of e:BasicExpression<Keyword, Var, Literal, Position, TypeInference.TypeAnnotation>
  -  | Yield of expr:BasicExpression<Keyword, Var, Literal, Position, TypeInference.TypeAnnotation>
  +  | Iterate of var_name : string * tmp_var_name : string * expr:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type> * path : Path
  +  | Compare of comparison : Keyword * expr1:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type> * expr2:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type>
  +  | Inline of e:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type>
  +  | Yield of expr:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type>
   
   (*
       createElement is responsible for generating the Create() functions.
  
positive.code: ﻿module CodeGenerator
  
  open System
  open Utilities
  open ParserMonad
  
negative.code:   | Keyword(k,pos,_) -> 
      failwithf "Non-custom keyword %A @ %A cannot be matched" k pos
    
  let createStaticRun (ctxt:ConcreteExpressionContext) (path:Path) (e:BasicExpression<Keyword, Var, Literal, Position, TypeInference.Type>) = 
    match e with
    | Keyword(Custom k, _,ti) 
    | Application(Regular,(Keyword(Custom k, _,ti)) :: [],_,_)
  