anchor.diff:  
       ctx.Dispose
   
  -let demoCommand line =
  -    match run parseCommand line with
  +let demoParser parser line =
  +    match run parser line with
           | Success(result, _, _)   -> printfn "Success: %A" result
           | Failure(errorMsg, _, _) -> printfn "Failure: %s" errorMsg
  +
  +let demoCommand = demoParser parseCommand
  +
  +let parseScript = ws >>. sepEndBy parseMethod ws
   
   let main =
       Console.WriteLine("Hello, world!")
       demoCommand "<a := b> || <c := d>* + (<foo>; <bar>)"
       demoCommand "{emp} <a := b> {fooBar()} || <c := d>* + (<foo>; <bar>)"
  -    demoCommand """
  -    {emp}
  -        <a := b>
  -    {holdTickIf(true, t)};
  +    demoParser parseScript """
  +    lock() {
  +      {emp}
  +        <t = ticket++;>
  +      {holdTickIf(true, t)}
  +        ;
           (
  -            {holdTickIf(true, t)}
  +          {holdTickIf(true, t)}
               <s = serving;>
  -            {holdTickIf(s != t) * holdLockIf(s = t) * termIf(s = t)}
  +          {holdTickIf(s != t) * holdLockIf(s = t) * termIf(s = t)}
           )*
  -    {holdLockIf(true)}
  +      {holdLockIf(true)}
  +    }
       """
       match run parseViewLine pv2 with
           | Success(result, _, _)   -> printfn "Success: %A" result
  
positive.code:     | PostViewCommand of Command * View
      | BothViewCommand of View * Command * View
  
  let wsChars = " \t\n"
  let wsc = anyOf wsChars
  let ws = manyChars wsc
  let ws1 = many1Chars wsc
  
  let inBrackets bra ket = between (pstring bra .>> ws) (ws >>. pstring ket)
  let inParens p = inBrackets "(" ")" p
  let inBraces p = inBrackets "{" "}" p
  
  let parseBin sep fn = pstring sep .>> ws >>% fun x y -> fn(x, y)
  
  
negative.code: let parseViewLine = inBraces parseView
  
  let parseCommand, parseCommandRef = createParserForwardedToRef<Command, unit>()
  let parseAtomic = inAngles (charsTillString ">" false 255) |>> Atomic
  let parseSkip = pstring "skip" >>% Skip
  let parseBracketedCommand = inParens parseCommand
  
  