{-
    *** NOTE ***
    DO NOT EDIT THIS FILE.
    This module is automatically generated by util/gen_prelude.pl.
-}

{-
    Perl 6 Prelude.
 
>   The world was fair, the mountains tall,
>   In Eldar Days before the fall
>   Of mighty kings in Nargothrond
>   And Gondolin, who now beyond
>   The Western Seas have passed away:
>   The world was fair in Durin's day.
 
-}

{-# NOINLINE _BypassPreludePC #-}
_BypassPreludePC :: IORef Bool
_BypassPreludePC = unsafePerformIO $ do
    bypass <- getEnv "PUGS_BYPASS_PRELUDE"
    newIORef $ case bypass of
        Nothing     -> False
        Just ""     -> False
        Just "0"    -> False
        _           -> True

{-# NOINLINE initPreludePC #-}
initPreludePC :: Env -> IO Env
initPreludePC env = do
    bypass <- readIORef _BypassPreludePC
    if bypass then return env else do
        -- Display the progress of loading the Prelude, but only in interactive
        -- mode (similar to GHCi):
        -- "Loading Prelude... done."
        let dispProgress = (posName . envPos $ env) == "<interactive>"
        when dispProgress $ putStr "Loading Prelude... "
        ast <- astPCP                  -- what pugs -CPugs Prelude.pm gives,
        glob <- globPCP                -- made available here.
        globRef <- liftSTM $ do
            glob' <- readTVar $ envGlobal env
            newTVar (glob `unionPads` glob')
        runEnv env{ envBody = ast, envGlobal = globRef, envDebug = Nothing }
        when dispProgress $ putStrLn "done."
        return env{ envGlobal = globRef }

globPCP :: IO Pad
globPCP = fmap mkPad . sequence $ 
            [(do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- newObject (mkType "Scalar");
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("$!", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Array");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("@caller", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [return
                                                                  (Var "@caller"),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&Pugs::Internals::caller");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$kind");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 142 46 142 51)) exp)),
                                                                             (do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$skip");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 142 53 142 58)) exp)),
                                                                             (do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$label");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 142 60 142 66)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 142 22 142 67)) exp))];
                                                             return (Syn "=" exps));
                                                        exp2
                                                         <- (do
                                                             exp
                                                              <- (do
                                                                  exps
                                                                   <- sequence
                                                                      [(do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&elems");
                                                                        exp2
                                                                         <- (do
                                                                             exp
                                                                              <- return
                                                                                 (Var "@caller");
                                                                             return (Just exp));
                                                                        exps
                                                                         <- sequence
                                                                            [];
                                                                        return (App exp1 exp2 exps)),
                                                                       (do
                                                                        exp
                                                                         <- (do
                                                                             exp1
                                                                              <- return
                                                                                 (Var "&new");
                                                                             exp2
                                                                              <- (do
                                                                                  exp
                                                                                   <- return
                                                                                      (Var ":Control::Caller");
                                                                                  return (Just exp));
                                                                             exps
                                                                              <- sequence
                                                                                 [(do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "package");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 0);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 151 34 151 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 151 13 151 36)) exp)),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "file");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 1);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 152 34 152 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 152 13 152 36)) exp)),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "line");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 2);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 153 34 153 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 153 13 153 36)) exp)),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "subname");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 3);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 154 34 154 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 154 13 154 36)) exp)),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "subtype");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 4);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 155 34 155 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 155 13 155 36)) exp)),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- return
                                                                                            (Var "&infix:=>");
                                                                                        exp2
                                                                                         <- return Nothing;
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "sub");
                                                                                                   return (Val val));
                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [return
                                                                                                   (Var "@caller"),
                                                                                                   (do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         val
                                                                                                          <- return
                                                                                                             (VInt 5);
                                                                                                         return (Val val));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 156 34 156 35)) exp))];
                                                                                              return (Syn "[]" exps))];
                                                                                        return (App exp1 exp2 exps));
                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 156 13 156 36)) exp))];
                                                                             return (App exp1 exp2 exps));
                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 150 26 157 11)) exp)),
                                                                       (do
                                                                        val
                                                                         <- return
                                                                            (VUndef);
                                                                        return (Val val))];
                                                                  return (Syn "if" exps));
                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 150 9 157 19)) exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&*caller",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = True, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$kind", paramContext = CxtItem (mkType "Class"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 141 38 141 41) (Var ":Any")},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$skip", paramContext = CxtItem (mkType "Int"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 141 56 141 57) (Val (VInt 0))},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$label", paramContext = CxtItem (mkType "Str"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Control::Caller"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*caller", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&lc");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$lang")];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 109 15 109 24)) exp)),
                                                             (do
                                                              exps
                                                               <- sequence
                                                                  [(do
                                                                    exp1
                                                                     <- (do
                                                                         exps
                                                                          <- sequence
                                                                             [(do
                                                                               exp
                                                                                <- (do
                                                                                    val
                                                                                     <- return
                                                                                        (VStr "perl6");
                                                                                    return (Val val));
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 110 18 110 28)) exp)),
                                                                              (do
                                                                               exps
                                                                                <- sequence
                                                                                   [(do
                                                                                     exp
                                                                                      <- (do
                                                                                          exp1
                                                                                           <- return
                                                                                              (Var "&Pugs::Internals::eval");
                                                                                          exp2
                                                                                           <- return Nothing;
                                                                                          exps
                                                                                           <- sequence
                                                                                              [(do
                                                                                                exp
                                                                                                 <- return
                                                                                                    (Var "$code");
                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 110 52 110 57)) exp))];
                                                                                          return (App exp1 exp2 exps));
                                                                                     return (Pos ((MkPos "src/perl6/Prelude.pm" 110 30 110 59)) exp))];
                                                                               return (Syn "block" exps))];
                                                                         return (Syn "when" exps));
                                                                    exp2
                                                                     <- (do
                                                                         exp1
                                                                          <- (do
                                                                              exps
                                                                               <- sequence
                                                                                  [(do
                                                                                    exp
                                                                                     <- (do
                                                                                         val
                                                                                          <- return
                                                                                             (VStr "perl5");
                                                                                         return (Val val));
                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 111 18 111 28)) exp)),
                                                                                   (do
                                                                                    exps
                                                                                     <- sequence
                                                                                        [(do
                                                                                          exp
                                                                                           <- (do
                                                                                               exp1
                                                                                                <- return
                                                                                                   (Var "&Pugs::Internals::eval_perl5");
                                                                                               exp2
                                                                                                <- return Nothing;
                                                                                               exps
                                                                                                <- sequence
                                                                                                   [(do
                                                                                                     exp
                                                                                                      <- return
                                                                                                         (Var "$code");
                                                                                                     return (Pos ((MkPos "src/perl6/Prelude.pm" 111 58 111 63)) exp))];
                                                                                               return (App exp1 exp2 exps));
                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 111 30 111 65)) exp))];
                                                                                    return (Syn "block" exps))];
                                                                              return (Syn "when" exps));
                                                                         exp2
                                                                          <- (do
                                                                              exp1
                                                                               <- (do
                                                                                   exps
                                                                                    <- sequence
                                                                                       [(do
                                                                                         exp
                                                                                          <- (do
                                                                                              val
                                                                                               <- return
                                                                                                  (VStr "haskell");
                                                                                              return (Val val));
                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 112 18 112 28)) exp)),
                                                                                        (do
                                                                                         exps
                                                                                          <- sequence
                                                                                             [(do
                                                                                               exp
                                                                                                <- (do
                                                                                                    exp1
                                                                                                     <- return
                                                                                                        (Var "&Pugs::Internals::eval_haskell");
                                                                                                    exp2
                                                                                                     <- return Nothing;
                                                                                                    exps
                                                                                                     <- sequence
                                                                                                        [(do
                                                                                                          exp
                                                                                                           <- return
                                                                                                              (Var "$code");
                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 112 60 112 65)) exp))];
                                                                                                    return (App exp1 exp2 exps));
                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 112 30 112 67)) exp))];
                                                                                         return (Syn "block" exps))];
                                                                                   return (Syn "when" exps));
                                                                              exp2
                                                                               <- (do
                                                                                   exp1
                                                                                    <- (do
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp
                                                                                               <- (do
                                                                                                   val
                                                                                                    <- return
                                                                                                       (VStr "parrot");
                                                                                                   return (Val val));
                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 113 18 113 28)) exp)),
                                                                                             (do
                                                                                              exps
                                                                                               <- sequence
                                                                                                  [(do
                                                                                                    exp
                                                                                                     <- (do
                                                                                                         exp1
                                                                                                          <- return
                                                                                                             (Var "&Pugs::Internals::eval_parrot");
                                                                                                         exp2
                                                                                                          <- return Nothing;
                                                                                                         exps
                                                                                                          <- sequence
                                                                                                             [(do
                                                                                                               exp
                                                                                                                <- return
                                                                                                                   (Var "$code");
                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 113 59 113 64)) exp))];
                                                                                                         return (App exp1 exp2 exps));
                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 113 30 113 66)) exp))];
                                                                                              return (Syn "block" exps))];
                                                                                        return (Syn "when" exps));
                                                                                   exp2
                                                                                    <- (do
                                                                                        exp1
                                                                                         <- (do
                                                                                             exps
                                                                                              <- sequence
                                                                                                 [(do
                                                                                                   exp
                                                                                                    <- (do
                                                                                                        val
                                                                                                         <- return
                                                                                                            (VStr "pir");
                                                                                                        return (Val val));
                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 114 18 114 28)) exp)),
                                                                                                  (do
                                                                                                   exps
                                                                                                    <- sequence
                                                                                                       [(do
                                                                                                         exp
                                                                                                          <- (do
                                                                                                              exp1
                                                                                                               <- return
                                                                                                                  (Var "&Pugs::Internals::eval_parrot");
                                                                                                              exp2
                                                                                                               <- return Nothing;
                                                                                                              exps
                                                                                                               <- sequence
                                                                                                                  [(do
                                                                                                                    exp
                                                                                                                     <- return
                                                                                                                        (Var "$code");
                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 114 59 114 64)) exp))];
                                                                                                              return (App exp1 exp2 exps));
                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 114 30 114 66)) exp))];
                                                                                                   return (Syn "block" exps))];
                                                                                             return (Syn "when" exps));
                                                                                        exp2
                                                                                         <- (do
                                                                                             exp1
                                                                                              <- (do
                                                                                                  exps
                                                                                                   <- sequence
                                                                                                      [(do
                                                                                                        exp
                                                                                                         <- (do
                                                                                                             val
                                                                                                              <- return
                                                                                                                 (VStr "yaml");
                                                                                                             return (Val val));
                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 115 18 115 28)) exp)),
                                                                                                       (do
                                                                                                        exps
                                                                                                         <- sequence
                                                                                                            [(do
                                                                                                              exp
                                                                                                               <- (do
                                                                                                                   exp1
                                                                                                                    <- return
                                                                                                                       (Var "&Pugs::Internals::eval_yaml");
                                                                                                                   exp2
                                                                                                                    <- return Nothing;
                                                                                                                   exps
                                                                                                                    <- sequence
                                                                                                                       [(do
                                                                                                                         exp
                                                                                                                          <- return
                                                                                                                             (Var "$code");
                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 115 57 115 62)) exp))];
                                                                                                                   return (App exp1 exp2 exps));
                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 115 30 115 64)) exp))];
                                                                                                        return (Syn "block" exps))];
                                                                                                  return (Syn "when" exps));
                                                                                             exp2
                                                                                              <- (do
                                                                                                  exp
                                                                                                   <- (do
                                                                                                       exp1
                                                                                                        <- return
                                                                                                           (Var "&die");
                                                                                                       exp2
                                                                                                        <- return Nothing;
                                                                                                       exps
                                                                                                        <- sequence
                                                                                                           [(do
                                                                                                             exp
                                                                                                              <- (do
                                                                                                                  exp1
                                                                                                                   <- return
                                                                                                                      (Var "&infix:~");
                                                                                                                  exp2
                                                                                                                   <- return Nothing;
                                                                                                                  exps
                                                                                                                   <- sequence
                                                                                                                      [(do
                                                                                                                        val
                                                                                                                         <- return
                                                                                                                            (VStr "Language \"");
                                                                                                                        return (Val val)),
                                                                                                                       (do
                                                                                                                        exp1
                                                                                                                         <- return
                                                                                                                            (Var "&infix:~");
                                                                                                                        exp2
                                                                                                                         <- return Nothing;
                                                                                                                        exps
                                                                                                                         <- sequence
                                                                                                                            [return
                                                                                                                             (Var "$lang"),
                                                                                                                             (do
                                                                                                                              val
                                                                                                                               <- return
                                                                                                                                  (VStr "\" unknown.");
                                                                                                                              return (Val val))];
                                                                                                                        return (App exp1 exp2 exps))];
                                                                                                                  return (App exp1 exp2 exps));
                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 117 17 117 46)) exp))];
                                                                                                       return (App exp1 exp2 exps));
                                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 117 13 117 46)) exp));
                                                                                             return (Stmts exp1 exp2));
                                                                                        return (Stmts exp1 exp2));
                                                                                   return (Stmts exp1 exp2));
                                                                              return (Stmts exp1 exp2));
                                                                         return (Stmts exp1 exp2));
                                                                    return (Stmts exp1 exp2))];
                                                              return (Syn "block" exps))];
                                                        return (Syn "given" exps));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&*eval",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = True, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$code", paramContext = CxtItem (mkType "Str"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 107 34 107 44) (Var "$CALLER::_")},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$lang", paramContext = CxtItem (mkType "Str"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 107 59 107 66) (Val (VStr "Perl6"))}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*eval", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$res", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Noop);
                                                        exp2
                                                         <- (do
                                                             pad
                                                              <- fmap mkPad . sequence $ 
                                                                     [(do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Scalar");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("$sec", tvars))];
                                                             exp
                                                              <- (do
                                                                  exp1
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [return
                                                                            (Var "$sec"),
                                                                            (do
                                                                             exp
                                                                              <- (do
                                                                                  exp1
                                                                                   <- return
                                                                                      (Var "&int");
                                                                                  exp2
                                                                                   <- return Nothing;
                                                                                  exps
                                                                                   <- sequence
                                                                                      [return
                                                                                       (Var "$when")];
                                                                                  return (App exp1 exp2 exps));
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 235 19 235 28)) exp))];
                                                                       return (Syn "=" exps));
                                                                  exp2
                                                                   <- (do
                                                                       pad
                                                                        <- fmap mkPad . sequence $ 
                                                                               [(do
                                                                                 tvars
                                                                                  <- sequence
                                                                                     [(do
                                                                                       fresh
                                                                                        <- liftSTM (newTVar True);
                                                                                       tvar
                                                                                        <- (do
                                                                                            vref
                                                                                             <- newObject (mkType "Scalar");
                                                                                            liftSTM (newTVar vref));
                                                                                       return (fresh, tvar))];
                                                                                 return ("$pico", tvars))];
                                                                       exp
                                                                        <- (do
                                                                            exp1
                                                                             <- (do
                                                                                 exps
                                                                                  <- sequence
                                                                                     [return
                                                                                      (Var "$pico"),
                                                                                      (do
                                                                                       exp
                                                                                        <- (do
                                                                                            exp1
                                                                                             <- return
                                                                                                (Var "&infix:*");
                                                                                            exp2
                                                                                             <- return Nothing;
                                                                                            exps
                                                                                             <- sequence
                                                                                                [(do
                                                                                                  exp
                                                                                                   <- (do
                                                                                                       exp1
                                                                                                        <- return
                                                                                                           (Var "&infix:-");
                                                                                                       exp2
                                                                                                        <- return Nothing;
                                                                                                       exps
                                                                                                        <- sequence
                                                                                                           [return
                                                                                                            (Var "$when"),
                                                                                                            (do
                                                                                                             exp1
                                                                                                              <- return
                                                                                                                 (Var "&int");
                                                                                                             exp2
                                                                                                              <- return Nothing;
                                                                                                             exps
                                                                                                              <- sequence
                                                                                                                 [(do
                                                                                                                   exp
                                                                                                                    <- return
                                                                                                                       (Var "$when");
                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 236 33 236 38)) exp))];
                                                                                                             return (App exp1 exp2 exps))];
                                                                                                       return (App exp1 exp2 exps));
                                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 236 21 236 38)) exp)),
                                                                                                 (do
                                                                                                  exp1
                                                                                                   <- return
                                                                                                      (Var "&infix:**");
                                                                                                  exp2
                                                                                                   <- return Nothing;
                                                                                                  exps
                                                                                                   <- sequence
                                                                                                      [(do
                                                                                                        val
                                                                                                         <- return
                                                                                                            (VInt 10);
                                                                                                        return (Val val)),
                                                                                                       (do
                                                                                                        val
                                                                                                         <- return
                                                                                                            (VInt 12);
                                                                                                        return (Val val))];
                                                                                                  return (App exp1 exp2 exps))];
                                                                                            return (App exp1 exp2 exps));
                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 236 20 236 48)) exp))];
                                                                                 return (Syn "=" exps));
                                                                            exp2
                                                                             <- (do
                                                                                 pad
                                                                                  <- fmap mkPad . sequence $ 
                                                                                         [(do
                                                                                           tvars
                                                                                            <- sequence
                                                                                               [(do
                                                                                                 fresh
                                                                                                  <- liftSTM (newTVar True);
                                                                                                 tvar
                                                                                                  <- (do
                                                                                                      vref
                                                                                                       <- newObject (mkType "Array");
                                                                                                      liftSTM (newTVar vref));
                                                                                                 return (fresh, tvar))];
                                                                                           return ("@tm", tvars))];
                                                                                 exp
                                                                                  <- (do
                                                                                      exp1
                                                                                       <- (do
                                                                                           exps
                                                                                            <- sequence
                                                                                               [return
                                                                                                (Var "@tm"),
                                                                                                (do
                                                                                                 exp
                                                                                                  <- (do
                                                                                                      exp1
                                                                                                       <- return
                                                                                                          (Var "&Pugs::Internals::localtime");
                                                                                                      exp2
                                                                                                       <- return Nothing;
                                                                                                      exps
                                                                                                       <- sequence
                                                                                                          [(do
                                                                                                            exp
                                                                                                             <- (do
                                                                                                                 exp1
                                                                                                                  <- return
                                                                                                                     (Var "&bool::false");
                                                                                                                 exp2
                                                                                                                  <- return Nothing;
                                                                                                                 exps
                                                                                                                  <- sequence
                                                                                                                     [];
                                                                                                                 return (App exp1 exp2 exps));
                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 241 49 241 60)) exp)),
                                                                                                           (do
                                                                                                            exp
                                                                                                             <- return
                                                                                                                (Var "$sec");
                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 241 62 241 66)) exp)),
                                                                                                           (do
                                                                                                            exp
                                                                                                             <- return
                                                                                                                (Var "$pico");
                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 241 68 241 73)) exp))];
                                                                                                      return (App exp1 exp2 exps));
                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 241 22 241 74)) exp))];
                                                                                           return (Syn "=" exps));
                                                                                      exp2
                                                                                       <- (do
                                                                                           exp1
                                                                                            <- (do
                                                                                                exp
                                                                                                 <- (do
                                                                                                     exps
                                                                                                      <- sequence
                                                                                                         [return
                                                                                                          (Var "$res"),
                                                                                                          (do
                                                                                                           exp1
                                                                                                            <- return
                                                                                                               (Var "&new");
                                                                                                           exp2
                                                                                                            <- (do
                                                                                                                exp
                                                                                                                 <- return
                                                                                                                    (Var ":Time::Local");
                                                                                                                return (Just exp));
                                                                                                           exps
                                                                                                            <- sequence
                                                                                                               [(do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "year");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 0);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 248 32 248 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 248 28 248 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 248 17 248 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "month");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 1);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 249 32 249 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 249 28 249 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 249 17 249 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "day");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 2);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 250 32 250 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 250 28 250 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 250 17 250 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "hour");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 3);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 251 32 251 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 251 28 251 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 251 17 251 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "min");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 4);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 252 32 252 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 252 28 252 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 252 17 252 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "sec");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 5);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 253 32 253 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 253 28 253 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 253 17 253 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "picosec");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 6);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 254 32 254 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 254 28 254 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 254 17 254 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "wday");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 7);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 255 32 255 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 255 28 255 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 255 17 255 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "yday");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 8);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 256 32 256 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 256 28 256 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 256 17 256 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "tzname");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 9);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 257 32 257 33)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 257 28 257 34)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 257 17 257 34)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "tz");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 10);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 258 32 258 34)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 258 28 258 35)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 258 17 258 35)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&infix:=>");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr "is_dst");
                                                                                                                            return (Val val)),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [return
                                                                                                                                      (Var "@tm"),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 11);
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 259 32 259 34)) exp))];
                                                                                                                                 return (Syn "[]" exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 259 28 259 35)) exp))];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 259 17 259 35)) exp))];
                                                                                                           return (App exp1 exp2 exps))];
                                                                                                     return (Syn "=" exps));
                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 247 13 260 14)) exp));
                                                                                           exp2
                                                                                            <- (do
                                                                                                exp
                                                                                                 <- return
                                                                                                    (Var "$res");
                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 262 9 262 13)) exp));
                                                                                           return (Stmts exp1 exp2));
                                                                                      return (Stmts exp1 exp2));
                                                                                 return (Pad SMy pad exp));
                                                                            return (Stmts exp1 exp2));
                                                                       return (Pad SMy pad exp));
                                                                  return (Stmts exp1 exp2));
                                                             return (Pad SMy pad exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&*localtime",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = True, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$when", paramContext = CxtItem (mkType "Num"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 233 38 233 42) (App (Var "&time") Nothing [])}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Time::Local"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*localtime", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&infix:&");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$a"),
                                                                        (do
                                                                         exp1
                                                                          <- return
                                                                             (Var "&any");
                                                                         exp2
                                                                          <- return Nothing;
                                                                         exps
                                                                          <- sequence
                                                                             [(do
                                                                               exp
                                                                                <- return
                                                                                   (Var "$r");
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 41 62 41 64)) exp)),
                                                                              (do
                                                                               exp
                                                                                <- return
                                                                                   (Var "$w");
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 41 66 41 68)) exp)),
                                                                              (do
                                                                               exp
                                                                                <- return
                                                                                   (Var "$rw");
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 41 70 41 73)) exp))];
                                                                         return (App exp1 exp2 exps))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 41 53 41 74)) exp)),
                                                             (do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&die");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp
                                                                          <- (do
                                                                              val
                                                                               <- return
                                                                                  (VStr "fancy open modes not supported yet");
                                                                              return (Val val));
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 41 13 41 50)) exp))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 41 9 41 50)) exp)),
                                                             return
                                                             (Noop)];
                                                        return (Syn "if" exps));
                                                   exp2
                                                    <- (do
                                                        pad
                                                         <- fmap mkPad . sequence $ 
                                                                [(do
                                                                  tvars
                                                                   <- sequence
                                                                      [(do
                                                                        fresh
                                                                         <- liftSTM (newTVar True);
                                                                        tvar
                                                                         <- (do
                                                                             vref
                                                                              <- newObject (mkType "Scalar");
                                                                             liftSTM (newTVar vref));
                                                                        return (fresh, tvar))];
                                                                  return ("$mode", tvars))];
                                                        exp
                                                         <- (do
                                                             exp1
                                                              <- (do
                                                                  exps
                                                                   <- sequence
                                                                      [(do
                                                                        exp
                                                                         <- return
                                                                            (Var "$a");
                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 43 24 43 26)) exp)),
                                                                       (do
                                                                        exp
                                                                         <- (do
                                                                             exps
                                                                              <- sequence
                                                                                 [return
                                                                                  (Var "$mode"),
                                                                                  (do
                                                                                   exp
                                                                                    <- (do
                                                                                        val
                                                                                         <- return
                                                                                            (VStr "a");
                                                                                        return (Val val));
                                                                                   return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                             return (Syn "=" exps));
                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 43 9 43 21)) exp)),
                                                                       return
                                                                       (Noop)];
                                                                  return (Syn "if" exps));
                                                             exp2
                                                              <- (do
                                                                  exp1
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [(do
                                                                             exp
                                                                              <- return
                                                                                 (Var "$w");
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 44 24 44 26)) exp)),
                                                                            (do
                                                                             exp
                                                                              <- (do
                                                                                  exps
                                                                                   <- sequence
                                                                                      [return
                                                                                       (Var "$mode"),
                                                                                       (do
                                                                                        exp
                                                                                         <- (do
                                                                                             val
                                                                                              <- return
                                                                                                 (VStr "w");
                                                                                             return (Val val));
                                                                                        return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                  return (Syn "=" exps));
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 44 9 44 21)) exp)),
                                                                            return
                                                                            (Noop)];
                                                                       return (Syn "if" exps));
                                                                  exp2
                                                                   <- (do
                                                                       exp1
                                                                        <- (do
                                                                            exps
                                                                             <- sequence
                                                                                [(do
                                                                                  exp
                                                                                   <- (do
                                                                                       exp1
                                                                                        <- return
                                                                                           (Var "&infix:||");
                                                                                       exp2
                                                                                        <- return Nothing;
                                                                                       exps
                                                                                        <- sequence
                                                                                           [return
                                                                                            (Var "$rw"),
                                                                                            (do
                                                                                             exp1
                                                                                              <- return
                                                                                                 (Var "&infix:&");
                                                                                             exp2
                                                                                              <- return Nothing;
                                                                                             exps
                                                                                              <- sequence
                                                                                                 [return
                                                                                                  (Var "$r"),
                                                                                                  return
                                                                                                  (Var "$w")];
                                                                                             return (App exp1 exp2 exps))];
                                                                                       return (App exp1 exp2 exps));
                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 45 25 45 39)) exp)),
                                                                                 (do
                                                                                  exp
                                                                                   <- (do
                                                                                       exps
                                                                                        <- sequence
                                                                                           [return
                                                                                            (Var "$mode"),
                                                                                            (do
                                                                                             exp
                                                                                              <- (do
                                                                                                  val
                                                                                                   <- return
                                                                                                      (VStr "rw");
                                                                                                  return (Val val));
                                                                                             return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                       return (Syn "=" exps));
                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 45 9 45 22)) exp)),
                                                                                 return
                                                                                 (Noop)];
                                                                            return (Syn "if" exps));
                                                                       exp2
                                                                        <- (do
                                                                            exp1
                                                                             <- (do
                                                                                 exp
                                                                                  <- (do
                                                                                      exps
                                                                                       <- sequence
                                                                                          [return
                                                                                           (Var "$mode"),
                                                                                           (do
                                                                                            exp
                                                                                             <- (do
                                                                                                 val
                                                                                                  <- return
                                                                                                     (VStr "r");
                                                                                                 return (Val val));
                                                                                            return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                      return (Syn "||=" exps));
                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 46 9 46 22)) exp));
                                                                            exp2
                                                                             <- (do
                                                                                 pad
                                                                                  <- fmap mkPad . sequence $ 
                                                                                         [(do
                                                                                           tvars
                                                                                            <- sequence
                                                                                               [(do
                                                                                                 fresh
                                                                                                  <- liftSTM (newTVar True);
                                                                                                 tvar
                                                                                                  <- (do
                                                                                                      vref
                                                                                                       <- newObject (mkType "Scalar");
                                                                                                      liftSTM (newTVar vref));
                                                                                                 return (fresh, tvar))];
                                                                                           return ("$fh", tvars))];
                                                                                 exp
                                                                                  <- (do
                                                                                      exp1
                                                                                       <- (do
                                                                                           exps
                                                                                            <- sequence
                                                                                               [return
                                                                                                (Var "$fh"),
                                                                                                (do
                                                                                                 exp
                                                                                                  <- (do
                                                                                                      exp1
                                                                                                       <- return
                                                                                                          (Var "&Pugs::Internals::openFile");
                                                                                                      exp2
                                                                                                       <- return Nothing;
                                                                                                      exps
                                                                                                       <- sequence
                                                                                                          [(do
                                                                                                            exp
                                                                                                             <- return
                                                                                                                (Var "$filename");
                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 49 44 49 53)) exp)),
                                                                                                           (do
                                                                                                            exp
                                                                                                             <- return
                                                                                                                (Var "$mode");
                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 49 55 49 60)) exp))];
                                                                                                      return (App exp1 exp2 exps));
                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 49 18 49 61)) exp))];
                                                                                           return (Syn "=" exps));
                                                                                      exp2
                                                                                       <- (do
                                                                                           exp1
                                                                                            <- (do
                                                                                                exps
                                                                                                 <- sequence
                                                                                                    [(do
                                                                                                      exp
                                                                                                       <- (do
                                                                                                           exp1
                                                                                                            <- return
                                                                                                               (Var "&infix:~~");
                                                                                                           exp2
                                                                                                            <- return Nothing;
                                                                                                           exps
                                                                                                            <- sequence
                                                                                                               [return
                                                                                                                (Var "$layer"),
                                                                                                                (do
                                                                                                                 exps
                                                                                                                  <- sequence
                                                                                                                     [(do
                                                                                                                       exp
                                                                                                                        <- (do
                                                                                                                            val
                                                                                                                             <- return
                                                                                                                                (VStr ":raw\\b");
                                                                                                                            return (Val val));
                                                                                                                       return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                                                      (do
                                                                                                                       exps
                                                                                                                        <- sequence
                                                                                                                           [(do
                                                                                                                             exps
                                                                                                                              <- sequence
                                                                                                                                 [(do
                                                                                                                                   exp1
                                                                                                                                    <- return
                                                                                                                                       (Var "&infix:=>");
                                                                                                                                   exp2
                                                                                                                                    <- return Nothing;
                                                                                                                                   exps
                                                                                                                                    <- sequence
                                                                                                                                       [(do
                                                                                                                                         val
                                                                                                                                          <- return
                                                                                                                                             (VStr "P5");
                                                                                                                                         return (Val val)),
                                                                                                                                        (do
                                                                                                                                         val
                                                                                                                                          <- return
                                                                                                                                             (VInt 1);
                                                                                                                                         return (Val val))];
                                                                                                                                   return (App exp1 exp2 exps))];
                                                                                                                             return (Syn "," exps))];
                                                                                                                       return (Syn "\\{}" exps))];
                                                                                                                 return (Syn "rx" exps))];
                                                                                                           return (App exp1 exp2 exps));
                                                                                                      return (Pos ((MkPos "src/perl6/Prelude.pm" 53 13 53 36)) exp)),
                                                                                                     (do
                                                                                                      exp
                                                                                                       <- (do
                                                                                                           exp1
                                                                                                            <- return
                                                                                                               (Var "&Pugs::Internals::hSetBinaryMode");
                                                                                                           exp2
                                                                                                            <- return Nothing;
                                                                                                           exps
                                                                                                            <- sequence
                                                                                                               [(do
                                                                                                                 exp
                                                                                                                  <- return
                                                                                                                     (Var "$fh");
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 52 41 52 44)) exp)),
                                                                                                                (do
                                                                                                                 exp
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- return
                                                                                                                          (Var "&bool::true");
                                                                                                                      exp2
                                                                                                                       <- return Nothing;
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [];
                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 52 46 52 56)) exp))];
                                                                                                           return (App exp1 exp2 exps));
                                                                                                      return (Pos ((MkPos "src/perl6/Prelude.pm" 52 9 52 58)) exp)),
                                                                                                     return
                                                                                                     (Noop)];
                                                                                                return (Syn "if" exps));
                                                                                           exp2
                                                                                            <- (do
                                                                                                exp
                                                                                                 <- return
                                                                                                    (Var "$fh");
                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 55 9 55 12)) exp));
                                                                                           return (Stmts exp1 exp2));
                                                                                      return (Stmts exp1 exp2));
                                                                                 return (Pad SMy pad exp));
                                                                            return (Stmts exp1 exp2));
                                                                       return (Stmts exp1 exp2));
                                                                  return (Stmts exp1 exp2));
                                                             return (Stmts exp1 exp2));
                                                        return (Pad SMy pad exp));
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&*open",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$filename", paramContext = CxtItem (mkType "Str"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$layer", paramContext = CxtItem (mkType "Str"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$r", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$w", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$rw", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$a", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "IO"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*open", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exp1
                                                              <- return
                                                                 (Var "&Pugs::Internals::hSeek");
                                                             exp2
                                                              <- return Nothing;
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- return
                                                                       (Var "$seek");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 59 32 59 37)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- return
                                                                       (Var "$position");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 59 39 59 48)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- return
                                                                       (Var "$whence");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 59 50 59 57)) exp))];
                                                             return (App exp1 exp2 exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 59 9 59 58)) exp));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&*seek",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$self", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$position", paramContext = CxtItem (mkType "Int"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$whence", paramContext = CxtItem (mkType "Int"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 58 61 58 78) (Var "$File::SEEK_START")},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "%_", paramContext = CxtSlurpy (mkType "Hash"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Bool"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*seek", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$flen", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [return
                                                                  (Var "$flen"),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&chars");
                                                                        exp2
                                                                         <- (do
                                                                             exp
                                                                              <- return
                                                                                 (Var "$fmt");
                                                                             return (Just exp));
                                                                        exps
                                                                         <- sequence
                                                                            [];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 303 16 303 26)) exp))];
                                                             return (Syn "=" exps));
                                                        exp2
                                                         <- (do
                                                             pad
                                                              <- fmap mkPad . sequence $ 
                                                                     [(do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Scalar");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("$fi", tvars))];
                                                             exp
                                                              <- (do
                                                                  exp1
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [return
                                                                            (Var "$fi"),
                                                                            (do
                                                                             exp
                                                                              <- (do
                                                                                  val
                                                                                   <- return
                                                                                      (VInt 0);
                                                                                  return (Val val));
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 304 14 304 15)) exp))];
                                                                       return (Syn "=" exps));
                                                                  exp2
                                                                   <- (do
                                                                       pad
                                                                        <- fmap mkPad . sequence $ 
                                                                               [(do
                                                                                 tvars
                                                                                  <- sequence
                                                                                     [(do
                                                                                       fresh
                                                                                        <- liftSTM (newTVar True);
                                                                                       tvar
                                                                                        <- (do
                                                                                            vref
                                                                                             <- newObject (mkType "Scalar");
                                                                                            liftSTM (newTVar vref));
                                                                                       return (fresh, tvar))];
                                                                                 return ("$ai", tvars))];
                                                                       exp
                                                                        <- (do
                                                                            exp1
                                                                             <- (do
                                                                                 exps
                                                                                  <- sequence
                                                                                     [return
                                                                                      (Var "$ai"),
                                                                                      (do
                                                                                       exp
                                                                                        <- (do
                                                                                            val
                                                                                             <- return
                                                                                                (VInt 0);
                                                                                            return (Val val));
                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 305 14 305 15)) exp))];
                                                                                 return (Syn "=" exps));
                                                                            exp2
                                                                             <- (do
                                                                                 pad
                                                                                  <- fmap mkPad . sequence $ 
                                                                                         [(do
                                                                                           tvars
                                                                                            <- sequence
                                                                                               [(do
                                                                                                 fresh
                                                                                                  <- liftSTM (newTVar True);
                                                                                                 tvar
                                                                                                  <- (do
                                                                                                      vref
                                                                                                       <- newObject (mkType "Scalar");
                                                                                                      liftSTM (newTVar vref));
                                                                                                 return (fresh, tvar))];
                                                                                           return ("$str", tvars))];
                                                                                 exp
                                                                                  <- (do
                                                                                      exp1
                                                                                       <- (do
                                                                                           exps
                                                                                            <- sequence
                                                                                               [return
                                                                                                (Var "$str"),
                                                                                                (do
                                                                                                 exp
                                                                                                  <- (do
                                                                                                      val
                                                                                                       <- return
                                                                                                          (VStr "");
                                                                                                      return (Val val));
                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 306 15 306 17)) exp))];
                                                                                           return (Syn "=" exps));
                                                                                      exp2
                                                                                       <- (do
                                                                                           exp1
                                                                                            <- (do
                                                                                                exps
                                                                                                 <- sequence
                                                                                                    [(do
                                                                                                      exp
                                                                                                       <- (do
                                                                                                           exp1
                                                                                                            <- return
                                                                                                               (Var "&infix:<");
                                                                                                           exp2
                                                                                                            <- return Nothing;
                                                                                                           exps
                                                                                                            <- sequence
                                                                                                               [return
                                                                                                                (Var "$fi"),
                                                                                                                return
                                                                                                                (Var "$flen")];
                                                                                                           return (App exp1 exp2 exps));
                                                                                                      return (Pos ((MkPos "src/perl6/Prelude.pm" 307 12 307 23)) exp)),
                                                                                                     (do
                                                                                                      exps
                                                                                                       <- sequence
                                                                                                          [(do
                                                                                                            pad
                                                                                                             <- fmap mkPad . sequence $ 
                                                                                                                    [(do
                                                                                                                      tvars
                                                                                                                       <- sequence
                                                                                                                          [(do
                                                                                                                            fresh
                                                                                                                             <- liftSTM (newTVar True);
                                                                                                                            tvar
                                                                                                                             <- (do
                                                                                                                                 vref
                                                                                                                                  <- newObject (mkType "Scalar");
                                                                                                                                 liftSTM (newTVar vref));
                                                                                                                            return (fresh, tvar))];
                                                                                                                      return ("$idx", tvars))];
                                                                                                            exp
                                                                                                             <- (do
                                                                                                                 exp1
                                                                                                                  <- (do
                                                                                                                      exps
                                                                                                                       <- sequence
                                                                                                                          [return
                                                                                                                           (Var "$idx"),
                                                                                                                           (do
                                                                                                                            exp
                                                                                                                             <- (do
                                                                                                                                 exp1
                                                                                                                                  <- return
                                                                                                                                     (Var "&index");
                                                                                                                                 exp2
                                                                                                                                  <- return Nothing;
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [(do
                                                                                                                                       exp
                                                                                                                                        <- return
                                                                                                                                           (Var "$fmt");
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 309 25 309 29)) exp)),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VStr "%");
                                                                                                                                            return (Val val));
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 309 30 309 33)) exp)),
                                                                                                                                      (do
                                                                                                                                       exp
                                                                                                                                        <- return
                                                                                                                                           (Var "$fi");
                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 309 34 309 37)) exp))];
                                                                                                                                 return (App exp1 exp2 exps));
                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 309 19 309 38)) exp))];
                                                                                                                      return (Syn "=" exps));
                                                                                                                 exp2
                                                                                                                  <- (do
                                                                                                                      exp1
                                                                                                                       <- (do
                                                                                                                           exps
                                                                                                                            <- sequence
                                                                                                                               [(do
                                                                                                                                 exp
                                                                                                                                  <- (do
                                                                                                                                      exp1
                                                                                                                                       <- return
                                                                                                                                          (Var "&infix:<");
                                                                                                                                      exp2
                                                                                                                                       <- return Nothing;
                                                                                                                                      exps
                                                                                                                                       <- sequence
                                                                                                                                          [return
                                                                                                                                           (Var "$idx"),
                                                                                                                                           (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 0);
                                                                                                                                            return (Val val))];
                                                                                                                                      return (App exp1 exp2 exps));
                                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 310 12 310 21)) exp)),
                                                                                                                                (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [(do
                                                                                                                                       exp1
                                                                                                                                        <- (do
                                                                                                                                            exp
                                                                                                                                             <- (do
                                                                                                                                                 exps
                                                                                                                                                  <- sequence
                                                                                                                                                     [return
                                                                                                                                                      (Var "$str"),
                                                                                                                                                      (do
                                                                                                                                                       exp1
                                                                                                                                                        <- return
                                                                                                                                                           (Var "&substr");
                                                                                                                                                       exp2
                                                                                                                                                        <- return Nothing;
                                                                                                                                                       exps
                                                                                                                                                        <- sequence
                                                                                                                                                           [(do
                                                                                                                                                             exp
                                                                                                                                                              <- return
                                                                                                                                                                 (Var "$fmt");
                                                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 311 28 311 32)) exp)),
                                                                                                                                                            (do
                                                                                                                                                             exp
                                                                                                                                                              <- return
                                                                                                                                                                 (Var "$fi");
                                                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 311 33 311 36)) exp))];
                                                                                                                                                       return (App exp1 exp2 exps))];
                                                                                                                                                 return (Syn "~=" exps));
                                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 311 13 311 37)) exp));
                                                                                                                                       exp2
                                                                                                                                        <- (do
                                                                                                                                            exp
                                                                                                                                             <- (do
                                                                                                                                                 exp1
                                                                                                                                                  <- return
                                                                                                                                                     (Var "&last");
                                                                                                                                                 exp2
                                                                                                                                                  <- return Nothing;
                                                                                                                                                 exps
                                                                                                                                                  <- sequence
                                                                                                                                                     [];
                                                                                                                                                 return (App exp1 exp2 exps));
                                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 312 13 312 17)) exp));
                                                                                                                                       return (Stmts exp1 exp2))];
                                                                                                                                 return (Syn "block" exps)),
                                                                                                                                (do
                                                                                                                                 exps
                                                                                                                                  <- sequence
                                                                                                                                     [(do
                                                                                                                                       pad
                                                                                                                                        <- fmap mkPad . sequence $ 
                                                                                                                                               [(do
                                                                                                                                                 tvars
                                                                                                                                                  <- sequence
                                                                                                                                                     [(do
                                                                                                                                                       fresh
                                                                                                                                                        <- liftSTM (newTVar True);
                                                                                                                                                       tvar
                                                                                                                                                        <- (do
                                                                                                                                                            vref
                                                                                                                                                             <- newObject (mkType "Scalar");
                                                                                                                                                            liftSTM (newTVar vref));
                                                                                                                                                       return (fresh, tvar))];
                                                                                                                                                 return ("$len", tvars))];
                                                                                                                                       exp
                                                                                                                                        <- (do
                                                                                                                                            exp1
                                                                                                                                             <- (do
                                                                                                                                                 exps
                                                                                                                                                  <- sequence
                                                                                                                                                     [return
                                                                                                                                                      (Var "$len"),
                                                                                                                                                      (do
                                                                                                                                                       exp
                                                                                                                                                        <- (do
                                                                                                                                                            exp1
                                                                                                                                                             <- return
                                                                                                                                                                (Var "&infix:-");
                                                                                                                                                            exp2
                                                                                                                                                             <- return Nothing;
                                                                                                                                                            exps
                                                                                                                                                             <- sequence
                                                                                                                                                                [return
                                                                                                                                                                 (Var "$idx"),
                                                                                                                                                                 return
                                                                                                                                                                 (Var "$fi")];
                                                                                                                                                            return (App exp1 exp2 exps));
                                                                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 314 23 314 33)) exp))];
                                                                                                                                                 return (Syn "=" exps));
                                                                                                                                            exp2
                                                                                                                                             <- (do
                                                                                                                                                 exp1
                                                                                                                                                  <- (do
                                                                                                                                                      exps
                                                                                                                                                       <- sequence
                                                                                                                                                          [(do
                                                                                                                                                            exp
                                                                                                                                                             <- (do
                                                                                                                                                                 exp1
                                                                                                                                                                  <- return
                                                                                                                                                                     (Var "&infix:>");
                                                                                                                                                                 exp2
                                                                                                                                                                  <- return Nothing;
                                                                                                                                                                 exps
                                                                                                                                                                  <- sequence
                                                                                                                                                                     [return
                                                                                                                                                                      (Var "$len"),
                                                                                                                                                                      (do
                                                                                                                                                                       val
                                                                                                                                                                        <- return
                                                                                                                                                                           (VInt 0);
                                                                                                                                                                       return (Val val))];
                                                                                                                                                                 return (App exp1 exp2 exps));
                                                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 315 47 315 55)) exp)),
                                                                                                                                                           (do
                                                                                                                                                            exp
                                                                                                                                                             <- (do
                                                                                                                                                                 exps
                                                                                                                                                                  <- sequence
                                                                                                                                                                     [return
                                                                                                                                                                      (Var "$str"),
                                                                                                                                                                      (do
                                                                                                                                                                       exp1
                                                                                                                                                                        <- return
                                                                                                                                                                           (Var "&substr");
                                                                                                                                                                       exp2
                                                                                                                                                                        <- return Nothing;
                                                                                                                                                                       exps
                                                                                                                                                                        <- sequence
                                                                                                                                                                           [(do
                                                                                                                                                                             exp
                                                                                                                                                                              <- return
                                                                                                                                                                                 (Var "$fmt");
                                                                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 315 28 315 32)) exp)),
                                                                                                                                                                            (do
                                                                                                                                                                             exp
                                                                                                                                                                              <- return
                                                                                                                                                                                 (Var "$fi");
                                                                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 315 33 315 36)) exp)),
                                                                                                                                                                            (do
                                                                                                                                                                             exp
                                                                                                                                                                              <- return
                                                                                                                                                                                 (Var "$len");
                                                                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 315 38 315 42)) exp))];
                                                                                                                                                                       return (App exp1 exp2 exps))];
                                                                                                                                                                 return (Syn "~=" exps));
                                                                                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 315 13 315 44)) exp)),
                                                                                                                                                           return
                                                                                                                                                           (Noop)];
                                                                                                                                                      return (Syn "if" exps));
                                                                                                                                                 exp2
                                                                                                                                                  <- (do
                                                                                                                                                      exp
                                                                                                                                                       <- (do
                                                                                                                                                           exps
                                                                                                                                                            <- sequence
                                                                                                                                                               [return
                                                                                                                                                                (Var "$fi"),
                                                                                                                                                                return
                                                                                                                                                                (Var "$idx")];
                                                                                                                                                           return (Syn "=" exps));
                                                                                                                                                      return (Pos ((MkPos "src/perl6/Prelude.pm" 316 13 316 23)) exp));
                                                                                                                                                 return (Stmts exp1 exp2));
                                                                                                                                            return (Stmts exp1 exp2));
                                                                                                                                       return (Pad SMy pad exp))];
                                                                                                                                 return (Syn "block" exps))];
                                                                                                                           return (Syn "if" exps));
                                                                                                                      exp2
                                                                                                                       <- (do
                                                                                                                           pad
                                                                                                                            <- fmap mkPad . sequence $ 
                                                                                                                                   [(do
                                                                                                                                     tvars
                                                                                                                                      <- sequence
                                                                                                                                         [(do
                                                                                                                                           fresh
                                                                                                                                            <- liftSTM (newTVar True);
                                                                                                                                           tvar
                                                                                                                                            <- (do
                                                                                                                                                vref
                                                                                                                                                 <- newObject (mkType "Scalar");
                                                                                                                                                liftSTM (newTVar vref));
                                                                                                                                           return (fresh, tvar))];
                                                                                                                                     return ("$start", tvars))];
                                                                                                                           exp
                                                                                                                            <- (do
                                                                                                                                exp1
                                                                                                                                 <- (do
                                                                                                                                     exps
                                                                                                                                      <- sequence
                                                                                                                                         [return
                                                                                                                                          (Var "$start"),
                                                                                                                                          (do
                                                                                                                                           exp
                                                                                                                                            <- return
                                                                                                                                               (Var "$fi");
                                                                                                                                           return (Pos ((MkPos "src/perl6/Prelude.pm" 320 21 320 24)) exp))];
                                                                                                                                     return (Syn "=" exps));
                                                                                                                                exp2
                                                                                                                                 <- (do
                                                                                                                                     exp1
                                                                                                                                      <- (do
                                                                                                                                          exp
                                                                                                                                           <- (do
                                                                                                                                               exp1
                                                                                                                                                <- return
                                                                                                                                                   (Var "&postfix:++");
                                                                                                                                               exp2
                                                                                                                                                <- return Nothing;
                                                                                                                                               exps
                                                                                                                                                <- sequence
                                                                                                                                                   [return
                                                                                                                                                    (Var "$fi")];
                                                                                                                                               return (App exp1 exp2 exps));
                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 321 9 321 14)) exp));
                                                                                                                                     exp2
                                                                                                                                      <- (do
                                                                                                                                          exp1
                                                                                                                                           <- (do
                                                                                                                                               exps
                                                                                                                                                <- sequence
                                                                                                                                                   [(do
                                                                                                                                                     exp
                                                                                                                                                      <- (do
                                                                                                                                                          exp1
                                                                                                                                                           <- return
                                                                                                                                                              (Var "&prefix:!");
                                                                                                                                                          exp2
                                                                                                                                                           <- return Nothing;
                                                                                                                                                          exps
                                                                                                                                                           <- sequence
                                                                                                                                                              [(do
                                                                                                                                                                exp
                                                                                                                                                                 <- (do
                                                                                                                                                                     exp1
                                                                                                                                                                      <- return
                                                                                                                                                                         (Var "&infix:~~");
                                                                                                                                                                     exp2
                                                                                                                                                                      <- return Nothing;
                                                                                                                                                                     exps
                                                                                                                                                                      <- sequence
                                                                                                                                                                         [(do
                                                                                                                                                                           exp1
                                                                                                                                                                            <- return
                                                                                                                                                                               (Var "&substr");
                                                                                                                                                                           exp2
                                                                                                                                                                            <- return Nothing;
                                                                                                                                                                           exps
                                                                                                                                                                            <- sequence
                                                                                                                                                                               [(do
                                                                                                                                                                                 exp
                                                                                                                                                                                  <- return
                                                                                                                                                                                     (Var "$fmt");
                                                                                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 322 24 322 28)) exp)),
                                                                                                                                                                                (do
                                                                                                                                                                                 exp
                                                                                                                                                                                  <- return
                                                                                                                                                                                     (Var "$fi");
                                                                                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 322 29 322 32)) exp)),
                                                                                                                                                                                (do
                                                                                                                                                                                 exp
                                                                                                                                                                                  <- (do
                                                                                                                                                                                      val
                                                                                                                                                                                       <- return
                                                                                                                                                                                          (VInt 1);
                                                                                                                                                                                      return (Val val));
                                                                                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 322 33 322 34)) exp))];
                                                                                                                                                                           return (App exp1 exp2 exps)),
                                                                                                                                                                          (do
                                                                                                                                                                           exp1
                                                                                                                                                                            <- return
                                                                                                                                                                               (Var "&any");
                                                                                                                                                                           exp2
                                                                                                                                                                            <- return Nothing;
                                                                                                                                                                           exps
                                                                                                                                                                            <- sequence
                                                                                                                                                                               [(do
                                                                                                                                                                                 exp
                                                                                                                                                                                  <- (do
                                                                                                                                                                                      exps
                                                                                                                                                                                       <- sequence
                                                                                                                                                                                          [(do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "%");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "c");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "s");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "d");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "u");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "o");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "x");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "e");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "f");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "g");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "X");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "E");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "G");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "b");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "p");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "n");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "i");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "D");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "U");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "O");
                                                                                                                                                                                            return (Val val)),
                                                                                                                                                                                           (do
                                                                                                                                                                                            val
                                                                                                                                                                                             <- return
                                                                                                                                                                                                (VStr "F");
                                                                                                                                                                                            return (Val val))];
                                                                                                                                                                                      return (Syn "," exps));
                                                                                                                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 323 23 323 66)) exp))];
                                                                                                                                                                           return (App exp1 exp2 exps))];
                                                                                                                                                                     return (App exp1 exp2 exps));
                                                                                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 322 17 323 66)) exp))];
                                                                                                                                                          return (App exp1 exp2 exps));
                                                                                                                                                     return (Pos ((MkPos "src/perl6/Prelude.pm" 322 15 323 68)) exp)),
                                                                                                                                                    (do
                                                                                                                                                     exps
                                                                                                                                                      <- sequence
                                                                                                                                                         [(do
                                                                                                                                                           exp1
                                                                                                                                                            <- (do
                                                                                                                                                                exp
                                                                                                                                                                 <- (do
                                                                                                                                                                     exp1
                                                                                                                                                                      <- return
                                                                                                                                                                         (Var "&postfix:++");
                                                                                                                                                                     exp2
                                                                                                                                                                      <- return Nothing;
                                                                                                                                                                     exps
                                                                                                                                                                      <- sequence
                                                                                                                                                                         [return
                                                                                                                                                                          (Var "$fi")];
                                                                                                                                                                     return (App exp1 exp2 exps));
                                                                                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 324 13 324 18)) exp));
                                                                                                                                                           exp2
                                                                                                                                                            <- return
                                                                                                                                                               (Noop);
                                                                                                                                                           return (Stmts exp1 exp2))];
                                                                                                                                                     return (Syn "block" exps))];
                                                                                                                                               return (Syn "while" exps));
                                                                                                                                          exp2
                                                                                                                                           <- (do
                                                                                                                                               pad
                                                                                                                                                <- fmap mkPad . sequence $ 
                                                                                                                                                       [(do
                                                                                                                                                         tvars
                                                                                                                                                          <- sequence
                                                                                                                                                             [(do
                                                                                                                                                               fresh
                                                                                                                                                                <- liftSTM (newTVar True);
                                                                                                                                                               tvar
                                                                                                                                                                <- (do
                                                                                                                                                                    vref
                                                                                                                                                                     <- newObject (mkType "Scalar");
                                                                                                                                                                    liftSTM (newTVar vref));
                                                                                                                                                               return (fresh, tvar))];
                                                                                                                                                         return ("$specifier", tvars))];
                                                                                                                                               exp
                                                                                                                                                <- (do
                                                                                                                                                    exp1
                                                                                                                                                     <- (do
                                                                                                                                                         exps
                                                                                                                                                          <- sequence
                                                                                                                                                             [return
                                                                                                                                                              (Var "$specifier"),
                                                                                                                                                              (do
                                                                                                                                                               exp
                                                                                                                                                                <- (do
                                                                                                                                                                    exp1
                                                                                                                                                                     <- return
                                                                                                                                                                        (Var "&substr");
                                                                                                                                                                    exp2
                                                                                                                                                                     <- return Nothing;
                                                                                                                                                                    exps
                                                                                                                                                                     <- sequence
                                                                                                                                                                        [(do
                                                                                                                                                                          exp
                                                                                                                                                                           <- return
                                                                                                                                                                              (Var "$fmt");
                                                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 326 32 326 36)) exp)),
                                                                                                                                                                         (do
                                                                                                                                                                          exp
                                                                                                                                                                           <- return
                                                                                                                                                                              (Var "$fi");
                                                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 326 37 326 40)) exp)),
                                                                                                                                                                         (do
                                                                                                                                                                          exp
                                                                                                                                                                           <- (do
                                                                                                                                                                               val
                                                                                                                                                                                <- return
                                                                                                                                                                                   (VInt 1);
                                                                                                                                                                               return (Val val));
                                                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 326 41 326 42)) exp))];
                                                                                                                                                                    return (App exp1 exp2 exps));
                                                                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 326 25 326 43)) exp))];
                                                                                                                                                         return (Syn "=" exps));
                                                                                                                                                    exp2
                                                                                                                                                     <- (do
                                                                                                                                                         exp1
                                                                                                                                                          <- (do
                                                                                                                                                              exp
                                                                                                                                                               <- (do
                                                                                                                                                                   exp1
                                                                                                                                                                    <- return
                                                                                                                                                                       (Var "&postfix:++");
                                                                                                                                                                   exp2
                                                                                                                                                                    <- return Nothing;
                                                                                                                                                                   exps
                                                                                                                                                                    <- sequence
                                                                                                                                                                       [return
                                                                                                                                                                        (Var "$fi")];
                                                                                                                                                                   return (App exp1 exp2 exps));
                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 326 45 326 50)) exp));
                                                                                                                                                         exp2
                                                                                                                                                          <- (do
                                                                                                                                                              pad
                                                                                                                                                               <- fmap mkPad . sequence $ 
                                                                                                                                                                      [(do
                                                                                                                                                                        tvars
                                                                                                                                                                         <- sequence
                                                                                                                                                                            [(do
                                                                                                                                                                              fresh
                                                                                                                                                                               <- liftSTM (newTVar True);
                                                                                                                                                                              tvar
                                                                                                                                                                               <- (do
                                                                                                                                                                                   vref
                                                                                                                                                                                    <- newObject (mkType "Scalar");
                                                                                                                                                                                   liftSTM (newTVar vref));
                                                                                                                                                                              return (fresh, tvar))];
                                                                                                                                                                        return ("$conversion", tvars))];
                                                                                                                                                              exp
                                                                                                                                                               <- (do
                                                                                                                                                                   exp1
                                                                                                                                                                    <- (do
                                                                                                                                                                        exps
                                                                                                                                                                         <- sequence
                                                                                                                                                                            [return
                                                                                                                                                                             (Var "$conversion"),
                                                                                                                                                                             (do
                                                                                                                                                                              exp
                                                                                                                                                                               <- (do
                                                                                                                                                                                   exp1
                                                                                                                                                                                    <- return
                                                                                                                                                                                       (Var "&substr");
                                                                                                                                                                                   exp2
                                                                                                                                                                                    <- return Nothing;
                                                                                                                                                                                   exps
                                                                                                                                                                                    <- sequence
                                                                                                                                                                                       [(do
                                                                                                                                                                                         exp
                                                                                                                                                                                          <- return
                                                                                                                                                                                             (Var "$fmt");
                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 327 33 327 37)) exp)),
                                                                                                                                                                                        (do
                                                                                                                                                                                         exp
                                                                                                                                                                                          <- return
                                                                                                                                                                                             (Var "$start");
                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 327 38 327 44)) exp)),
                                                                                                                                                                                        (do
                                                                                                                                                                                         exp
                                                                                                                                                                                          <- (do
                                                                                                                                                                                              exp1
                                                                                                                                                                                               <- return
                                                                                                                                                                                                  (Var "&infix:-");
                                                                                                                                                                                              exp2
                                                                                                                                                                                               <- return Nothing;
                                                                                                                                                                                              exps
                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                  [return
                                                                                                                                                                                                   (Var "$fi"),
                                                                                                                                                                                                   return
                                                                                                                                                                                                   (Var "$start")];
                                                                                                                                                                                              return (App exp1 exp2 exps));
                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 327 45 327 57)) exp))];
                                                                                                                                                                                   return (App exp1 exp2 exps));
                                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 327 26 327 58)) exp))];
                                                                                                                                                                        return (Syn "=" exps));
                                                                                                                                                                   exp2
                                                                                                                                                                    <- (do
                                                                                                                                                                        pad
                                                                                                                                                                         <- fmap mkPad . sequence $ 
                                                                                                                                                                                [(do
                                                                                                                                                                                  tvars
                                                                                                                                                                                   <- sequence
                                                                                                                                                                                      [(do
                                                                                                                                                                                        fresh
                                                                                                                                                                                         <- liftSTM (newTVar True);
                                                                                                                                                                                        tvar
                                                                                                                                                                                         <- (do
                                                                                                                                                                                             vref
                                                                                                                                                                                              <- newObject (mkType "Scalar");
                                                                                                                                                                                             liftSTM (newTVar vref));
                                                                                                                                                                                        return (fresh, tvar))];
                                                                                                                                                                                  return ("$arg", tvars))];
                                                                                                                                                                        exp
                                                                                                                                                                         <- (do
                                                                                                                                                                             exp1
                                                                                                                                                                              <- (do
                                                                                                                                                                                  exps
                                                                                                                                                                                   <- sequence
                                                                                                                                                                                      [(do
                                                                                                                                                                                        exp
                                                                                                                                                                                         <- (do
                                                                                                                                                                                             exp1
                                                                                                                                                                                              <- return
                                                                                                                                                                                                 (Var "&infix:ne");
                                                                                                                                                                                             exp2
                                                                                                                                                                                              <- return Nothing;
                                                                                                                                                                                             exps
                                                                                                                                                                                              <- sequence
                                                                                                                                                                                                 [return
                                                                                                                                                                                                  (Var "$specifier"),
                                                                                                                                                                                                  (do
                                                                                                                                                                                                   exp
                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                        val
                                                                                                                                                                                                         <- return
                                                                                                                                                                                                            (VStr "%");
                                                                                                                                                                                                        return (Val val));
                                                                                                                                                                                                   return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 331 12 331 30)) exp)),
                                                                                                                                                                                       (do
                                                                                                                                                                                        exps
                                                                                                                                                                                         <- sequence
                                                                                                                                                                                            [(do
                                                                                                                                                                                              exp1
                                                                                                                                                                                               <- (do
                                                                                                                                                                                                   exps
                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                       [(do
                                                                                                                                                                                                         exp
                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                              exp1
                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                  (Var "&infix:>=");
                                                                                                                                                                                                              exp2
                                                                                                                                                                                                               <- return Nothing;
                                                                                                                                                                                                              exps
                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                  [return
                                                                                                                                                                                                                   (Var "$ai"),
                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                    exp1
                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                        (Var "&prefix:+");
                                                                                                                                                                                                                    exp2
                                                                                                                                                                                                                     <- return Nothing;
                                                                                                                                                                                                                    exps
                                                                                                                                                                                                                     <- sequence
                                                                                                                                                                                                                        [return
                                                                                                                                                                                                                         (Var "@args")];
                                                                                                                                                                                                                    return (App exp1 exp2 exps))];
                                                                                                                                                                                                              return (App exp1 exp2 exps));
                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 332 56 332 69)) exp)),
                                                                                                                                                                                                        (do
                                                                                                                                                                                                         exp
                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                              exp1
                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                  (Var "&die");
                                                                                                                                                                                                              exp2
                                                                                                                                                                                                               <- return Nothing;
                                                                                                                                                                                                              exps
                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                  [(do
                                                                                                                                                                                                                    exp
                                                                                                                                                                                                                     <- (do
                                                                                                                                                                                                                         val
                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                             (VStr "Insufficient arguments to sprintf");
                                                                                                                                                                                                                         return (Val val));
                                                                                                                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 332 17 332 53)) exp))];
                                                                                                                                                                                                              return (App exp1 exp2 exps));
                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 332 13 332 53)) exp)),
                                                                                                                                                                                                        return
                                                                                                                                                                                                        (Noop)];
                                                                                                                                                                                                   return (Syn "if" exps));
                                                                                                                                                                                              exp2
                                                                                                                                                                                               <- (do
                                                                                                                                                                                                   exp1
                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                        exp
                                                                                                                                                                                                         <- (do
                                                                                                                                                                                                             exps
                                                                                                                                                                                                              <- sequence
                                                                                                                                                                                                                 [return
                                                                                                                                                                                                                  (Var "$arg"),
                                                                                                                                                                                                                  (do
                                                                                                                                                                                                                   exps
                                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                                       [return
                                                                                                                                                                                                                        (Var "@args"),
                                                                                                                                                                                                                        (do
                                                                                                                                                                                                                         exp
                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                             (Var "$ai");
                                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 333 26 333 29)) exp))];
                                                                                                                                                                                                                   return (Syn "[]" exps))];
                                                                                                                                                                                                             return (Syn "=" exps));
                                                                                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 333 13 333 30)) exp));
                                                                                                                                                                                                   exp2
                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                        exp
                                                                                                                                                                                                         <- (do
                                                                                                                                                                                                             exp1
                                                                                                                                                                                                              <- return
                                                                                                                                                                                                                 (Var "&postfix:++");
                                                                                                                                                                                                             exp2
                                                                                                                                                                                                              <- return Nothing;
                                                                                                                                                                                                             exps
                                                                                                                                                                                                              <- sequence
                                                                                                                                                                                                                 [return
                                                                                                                                                                                                                  (Var "$ai")];
                                                                                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 334 13 334 18)) exp));
                                                                                                                                                                                                   return (Stmts exp1 exp2));
                                                                                                                                                                                              return (Stmts exp1 exp2))];
                                                                                                                                                                                        return (Syn "block" exps)),
                                                                                                                                                                                       return
                                                                                                                                                                                       (Noop)];
                                                                                                                                                                                  return (Syn "if" exps));
                                                                                                                                                                             exp2
                                                                                                                                                                              <- (do
                                                                                                                                                                                  exps
                                                                                                                                                                                   <- sequence
                                                                                                                                                                                      [(do
                                                                                                                                                                                        exp
                                                                                                                                                                                         <- return
                                                                                                                                                                                            (Var "$specifier");
                                                                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 337 15 337 26)) exp)),
                                                                                                                                                                                       (do
                                                                                                                                                                                        exps
                                                                                                                                                                                         <- sequence
                                                                                                                                                                                            [(do
                                                                                                                                                                                              exp1
                                                                                                                                                                                               <- (do
                                                                                                                                                                                                   exps
                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                       [(do
                                                                                                                                                                                                         exp
                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                              val
                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                  (VStr "%");
                                                                                                                                                                                                              return (Val val));
                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 338 18 338 22)) exp)),
                                                                                                                                                                                                        (do
                                                                                                                                                                                                         exps
                                                                                                                                                                                                          <- sequence
                                                                                                                                                                                                             [(do
                                                                                                                                                                                                               exp1
                                                                                                                                                                                                                <- (do
                                                                                                                                                                                                                    exp
                                                                                                                                                                                                                     <- (do
                                                                                                                                                                                                                         exps
                                                                                                                                                                                                                          <- sequence
                                                                                                                                                                                                                             [return
                                                                                                                                                                                                                              (Var "$str"),
                                                                                                                                                                                                                              (do
                                                                                                                                                                                                                               exp
                                                                                                                                                                                                                                <- (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "%");
                                                                                                                                                                                                                                    return (Val val));
                                                                                                                                                                                                                               return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                                                                                                                                                         return (Syn "~=" exps));
                                                                                                                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 339 17 339 28)) exp));
                                                                                                                                                                                                               exp2
                                                                                                                                                                                                                <- return
                                                                                                                                                                                                                   (Noop);
                                                                                                                                                                                                               return (Stmts exp1 exp2))];
                                                                                                                                                                                                         return (Syn "block" exps))];
                                                                                                                                                                                                   return (Syn "when" exps));
                                                                                                                                                                                              exp2
                                                                                                                                                                                               <- (do
                                                                                                                                                                                                   exp1
                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                        exps
                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                            [(do
                                                                                                                                                                                                              exp
                                                                                                                                                                                                               <- (do
                                                                                                                                                                                                                   exp1
                                                                                                                                                                                                                    <- return
                                                                                                                                                                                                                       (Var "&any");
                                                                                                                                                                                                                   exp2
                                                                                                                                                                                                                    <- return Nothing;
                                                                                                                                                                                                                   exps
                                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                                       [(do
                                                                                                                                                                                                                         exp
                                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                                              exps
                                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                                  [(do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "c");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "d");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "u");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "o");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "x");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "X");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "b");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "i");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "D");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "U");
                                                                                                                                                                                                                                    return (Val val)),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    val
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (VStr "O");
                                                                                                                                                                                                                                    return (Val val))];
                                                                                                                                                                                                                              return (Syn "," exps));
                                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 341 22 341 45)) exp))];
                                                                                                                                                                                                                   return (App exp1 exp2 exps));
                                                                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 341 18 341 47)) exp)),
                                                                                                                                                                                                             (do
                                                                                                                                                                                                              exps
                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                  [(do
                                                                                                                                                                                                                    exp1
                                                                                                                                                                                                                     <- (do
                                                                                                                                                                                                                         exp
                                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                                              exps
                                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                                  [return
                                                                                                                                                                                                                                   (Var "$str"),
                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                    exp1
                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                        (Var "&Pugs::Internals::sprintf");
                                                                                                                                                                                                                                    exp2
                                                                                                                                                                                                                                     <- return Nothing;
                                                                                                                                                                                                                                    exps
                                                                                                                                                                                                                                     <- sequence
                                                                                                                                                                                                                                        [(do
                                                                                                                                                                                                                                          exp
                                                                                                                                                                                                                                           <- return
                                                                                                                                                                                                                                              (Var "$conversion");
                                                                                                                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 342 50 342 61)) exp)),
                                                                                                                                                                                                                                         (do
                                                                                                                                                                                                                                          exp
                                                                                                                                                                                                                                           <- (do
                                                                                                                                                                                                                                               exp1
                                                                                                                                                                                                                                                <- return
                                                                                                                                                                                                                                                   (Var "&int");
                                                                                                                                                                                                                                               exp2
                                                                                                                                                                                                                                                <- return Nothing;
                                                                                                                                                                                                                                               exps
                                                                                                                                                                                                                                                <- sequence
                                                                                                                                                                                                                                                   [(do
                                                                                                                                                                                                                                                     exp
                                                                                                                                                                                                                                                      <- return
                                                                                                                                                                                                                                                         (Var "$arg");
                                                                                                                                                                                                                                                     return (Pos ((MkPos "src/perl6/Prelude.pm" 342 66 342 70)) exp))];
                                                                                                                                                                                                                                               return (App exp1 exp2 exps));
                                                                                                                                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 342 62 342 71)) exp))];
                                                                                                                                                                                                                                    return (App exp1 exp2 exps))];
                                                                                                                                                                                                                              return (Syn "~=" exps));
                                                                                                                                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 342 17 342 72)) exp));
                                                                                                                                                                                                                    exp2
                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                        (Noop);
                                                                                                                                                                                                                    return (Stmts exp1 exp2))];
                                                                                                                                                                                                              return (Syn "block" exps))];
                                                                                                                                                                                                        return (Syn "when" exps));
                                                                                                                                                                                                   exp2
                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                        exp1
                                                                                                                                                                                                         <- (do
                                                                                                                                                                                                             exps
                                                                                                                                                                                                              <- sequence
                                                                                                                                                                                                                 [(do
                                                                                                                                                                                                                   exp
                                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                                        val
                                                                                                                                                                                                                         <- return
                                                                                                                                                                                                                            (VStr "s");
                                                                                                                                                                                                                        return (Val val));
                                                                                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 344 18 344 22)) exp)),
                                                                                                                                                                                                                  (do
                                                                                                                                                                                                                   exps
                                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                                       [(do
                                                                                                                                                                                                                         exp1
                                                                                                                                                                                                                          <- (do
                                                                                                                                                                                                                              exp
                                                                                                                                                                                                                               <- (do
                                                                                                                                                                                                                                   exps
                                                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                                                       [return
                                                                                                                                                                                                                                        (Var "$str"),
                                                                                                                                                                                                                                        (do
                                                                                                                                                                                                                                         exp1
                                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                                             (Var "&Pugs::Internals::sprintf");
                                                                                                                                                                                                                                         exp2
                                                                                                                                                                                                                                          <- return Nothing;
                                                                                                                                                                                                                                         exps
                                                                                                                                                                                                                                          <- sequence
                                                                                                                                                                                                                                             [(do
                                                                                                                                                                                                                                               exp
                                                                                                                                                                                                                                                <- return
                                                                                                                                                                                                                                                   (Var "$conversion");
                                                                                                                                                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 345 50 345 61)) exp)),
                                                                                                                                                                                                                                              (do
                                                                                                                                                                                                                                               exp
                                                                                                                                                                                                                                                <- (do
                                                                                                                                                                                                                                                    exp1
                                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                                        (Var "&infix:~");
                                                                                                                                                                                                                                                    exp2
                                                                                                                                                                                                                                                     <- return Nothing;
                                                                                                                                                                                                                                                    exps
                                                                                                                                                                                                                                                     <- sequence
                                                                                                                                                                                                                                                        [return
                                                                                                                                                                                                                                                         (Var "$arg"),
                                                                                                                                                                                                                                                         (do
                                                                                                                                                                                                                                                          val
                                                                                                                                                                                                                                                           <- return
                                                                                                                                                                                                                                                              (VStr "");
                                                                                                                                                                                                                                                          return (Val val))];
                                                                                                                                                                                                                                                    return (App exp1 exp2 exps));
                                                                                                                                                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 345 62 345 68)) exp))];
                                                                                                                                                                                                                                         return (App exp1 exp2 exps))];
                                                                                                                                                                                                                                   return (Syn "~=" exps));
                                                                                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 345 17 345 69)) exp));
                                                                                                                                                                                                                         exp2
                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                             (Noop);
                                                                                                                                                                                                                         return (Stmts exp1 exp2))];
                                                                                                                                                                                                                   return (Syn "block" exps))];
                                                                                                                                                                                                             return (Syn "when" exps));
                                                                                                                                                                                                        exp2
                                                                                                                                                                                                         <- (do
                                                                                                                                                                                                             exp1
                                                                                                                                                                                                              <- (do
                                                                                                                                                                                                                  exps
                                                                                                                                                                                                                   <- sequence
                                                                                                                                                                                                                      [(do
                                                                                                                                                                                                                        exp
                                                                                                                                                                                                                         <- (do
                                                                                                                                                                                                                             exp1
                                                                                                                                                                                                                              <- return
                                                                                                                                                                                                                                 (Var "&any");
                                                                                                                                                                                                                             exp2
                                                                                                                                                                                                                              <- return Nothing;
                                                                                                                                                                                                                             exps
                                                                                                                                                                                                                              <- sequence
                                                                                                                                                                                                                                 [(do
                                                                                                                                                                                                                                   exp
                                                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                                                        exps
                                                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                                                            [(do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "e");
                                                                                                                                                                                                                                              return (Val val)),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "f");
                                                                                                                                                                                                                                              return (Val val)),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "g");
                                                                                                                                                                                                                                              return (Val val)),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "E");
                                                                                                                                                                                                                                              return (Val val)),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "G");
                                                                                                                                                                                                                                              return (Val val)),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              val
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (VStr "F");
                                                                                                                                                                                                                                              return (Val val))];
                                                                                                                                                                                                                                        return (Syn "," exps));
                                                                                                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 347 22 347 35)) exp))];
                                                                                                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 347 18 347 37)) exp)),
                                                                                                                                                                                                                       (do
                                                                                                                                                                                                                        exps
                                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                                            [(do
                                                                                                                                                                                                                              exp1
                                                                                                                                                                                                                               <- (do
                                                                                                                                                                                                                                   exp
                                                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                                                        exps
                                                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                                                            [return
                                                                                                                                                                                                                                             (Var "$str"),
                                                                                                                                                                                                                                             (do
                                                                                                                                                                                                                                              exp1
                                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                                  (Var "&Pugs::Internals::sprintf");
                                                                                                                                                                                                                                              exp2
                                                                                                                                                                                                                                               <- return Nothing;
                                                                                                                                                                                                                                              exps
                                                                                                                                                                                                                                               <- sequence
                                                                                                                                                                                                                                                  [(do
                                                                                                                                                                                                                                                    exp
                                                                                                                                                                                                                                                     <- return
                                                                                                                                                                                                                                                        (Var "$conversion");
                                                                                                                                                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 348 50 348 61)) exp)),
                                                                                                                                                                                                                                                   (do
                                                                                                                                                                                                                                                    exp
                                                                                                                                                                                                                                                     <- (do
                                                                                                                                                                                                                                                         exp1
                                                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                                                             (Var "&infix:*");
                                                                                                                                                                                                                                                         exp2
                                                                                                                                                                                                                                                          <- return Nothing;
                                                                                                                                                                                                                                                         exps
                                                                                                                                                                                                                                                          <- sequence
                                                                                                                                                                                                                                                             [(do
                                                                                                                                                                                                                                                               val
                                                                                                                                                                                                                                                                <- return
                                                                                                                                                                                                                                                                   (VRat (1%1));
                                                                                                                                                                                                                                                               return (Val val)),
                                                                                                                                                                                                                                                              return
                                                                                                                                                                                                                                                              (Var "$arg")];
                                                                                                                                                                                                                                                         return (App exp1 exp2 exps));
                                                                                                                                                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 348 62 348 70)) exp))];
                                                                                                                                                                                                                                              return (App exp1 exp2 exps))];
                                                                                                                                                                                                                                        return (Syn "~=" exps));
                                                                                                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 348 17 348 71)) exp));
                                                                                                                                                                                                                              exp2
                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                  (Noop);
                                                                                                                                                                                                                              return (Stmts exp1 exp2))];
                                                                                                                                                                                                                        return (Syn "block" exps))];
                                                                                                                                                                                                                  return (Syn "when" exps));
                                                                                                                                                                                                             exp2
                                                                                                                                                                                                              <- (do
                                                                                                                                                                                                                  exps
                                                                                                                                                                                                                   <- sequence
                                                                                                                                                                                                                      [(do
                                                                                                                                                                                                                        exps
                                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                                            [(do
                                                                                                                                                                                                                              exp1
                                                                                                                                                                                                                               <- (do
                                                                                                                                                                                                                                   exp
                                                                                                                                                                                                                                    <- (do
                                                                                                                                                                                                                                        exp1
                                                                                                                                                                                                                                         <- return
                                                                                                                                                                                                                                            (Var "&die");
                                                                                                                                                                                                                                        exp2
                                                                                                                                                                                                                                         <- return Nothing;
                                                                                                                                                                                                                                        exps
                                                                                                                                                                                                                                         <- sequence
                                                                                                                                                                                                                                            [(do
                                                                                                                                                                                                                                              exp
                                                                                                                                                                                                                                               <- (do
                                                                                                                                                                                                                                                   exp1
                                                                                                                                                                                                                                                    <- return
                                                                                                                                                                                                                                                       (Var "&infix:~");
                                                                                                                                                                                                                                                   exp2
                                                                                                                                                                                                                                                    <- return Nothing;
                                                                                                                                                                                                                                                   exps
                                                                                                                                                                                                                                                    <- sequence
                                                                                                                                                                                                                                                       [(do
                                                                                                                                                                                                                                                         val
                                                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                                                             (VStr "sprintf does not yet implement %");
                                                                                                                                                                                                                                                         return (Val val)),
                                                                                                                                                                                                                                                        (do
                                                                                                                                                                                                                                                         exp1
                                                                                                                                                                                                                                                          <- return
                                                                                                                                                                                                                                                             (Var "&infix:~");
                                                                                                                                                                                                                                                         exp2
                                                                                                                                                                                                                                                          <- return Nothing;
                                                                                                                                                                                                                                                         exps
                                                                                                                                                                                                                                                          <- sequence
                                                                                                                                                                                                                                                             [(do
                                                                                                                                                                                                                                                               exps
                                                                                                                                                                                                                                                                <- sequence
                                                                                                                                                                                                                                                                   [(do
                                                                                                                                                                                                                                                                     exp
                                                                                                                                                                                                                                                                      <- return
                                                                                                                                                                                                                                                                         (Var "$specifier");
                                                                                                                                                                                                                                                                     return (Pos ((MkPos "src/perl6/Prelude.pm" 351 55 351 65)) exp))];
                                                                                                                                                                                                                                                               return (Syn "block" exps)),
                                                                                                                                                                                                                                                              (do
                                                                                                                                                                                                                                                               val
                                                                                                                                                                                                                                                                <- return
                                                                                                                                                                                                                                                                   (VStr "");
                                                                                                                                                                                                                                                               return (Val val))];
                                                                                                                                                                                                                                                         return (App exp1 exp2 exps))];
                                                                                                                                                                                                                                                   return (App exp1 exp2 exps));
                                                                                                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 351 21 351 67)) exp))];
                                                                                                                                                                                                                                        return (App exp1 exp2 exps));
                                                                                                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 351 17 351 67)) exp));
                                                                                                                                                                                                                              exp2
                                                                                                                                                                                                                               <- return
                                                                                                                                                                                                                                  (Noop);
                                                                                                                                                                                                                              return (Stmts exp1 exp2))];
                                                                                                                                                                                                                        return (Syn "block" exps))];
                                                                                                                                                                                                                  return (Syn "default" exps));
                                                                                                                                                                                                             return (Stmts exp1 exp2));
                                                                                                                                                                                                        return (Stmts exp1 exp2));
                                                                                                                                                                                                   return (Stmts exp1 exp2));
                                                                                                                                                                                              return (Stmts exp1 exp2))];
                                                                                                                                                                                        return (Syn "block" exps))];
                                                                                                                                                                                  return (Syn "given" exps));
                                                                                                                                                                             return (Stmts exp1 exp2));
                                                                                                                                                                        return (Pad SMy pad exp));
                                                                                                                                                                   return (Stmts exp1 exp2));
                                                                                                                                                              return (Pad SMy pad exp));
                                                                                                                                                         return (Stmts exp1 exp2));
                                                                                                                                                    return (Stmts exp1 exp2));
                                                                                                                                               return (Pad SMy pad exp));
                                                                                                                                          return (Stmts exp1 exp2));
                                                                                                                                     return (Stmts exp1 exp2));
                                                                                                                                return (Stmts exp1 exp2));
                                                                                                                           return (Pad SMy pad exp));
                                                                                                                      return (Stmts exp1 exp2));
                                                                                                                 return (Stmts exp1 exp2));
                                                                                                            return (Pad SMy pad exp))];
                                                                                                      return (Syn "block" exps))];
                                                                                                return (Syn "while" exps));
                                                                                           exp2
                                                                                            <- (do
                                                                                                exp
                                                                                                 <- return
                                                                                                    (Var "$str");
                                                                                                return (Pos ((MkPos "src/perl6/Prelude.pm" 355 5 355 9)) exp));
                                                                                           return (Stmts exp1 exp2));
                                                                                      return (Stmts exp1 exp2));
                                                                                 return (Pad SMy pad exp));
                                                                            return (Stmts exp1 exp2));
                                                                       return (Pad SMy pad exp));
                                                                  return (Stmts exp1 exp2));
                                                             return (Pad SMy pad exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&*sprintf",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$fmt", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "@args", paramContext = CxtSlurpy (mkType "Array"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&*sprintf", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$i", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$mess", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exp
                                                              <- (do
                                                                  exps
                                                                   <- sequence
                                                                      [return
                                                                       (Var "$mess"),
                                                                       (do
                                                                        exp
                                                                         <- (do
                                                                             exp1
                                                                              <- return
                                                                                 (Var "&infix:~");
                                                                             exp2
                                                                              <- return Nothing;
                                                                             exps
                                                                              <- sequence
                                                                                 [return
                                                                                  (Var "$e"),
                                                                                  (do
                                                                                   exp1
                                                                                    <- return
                                                                                       (Var "&infix:~");
                                                                                   exp2
                                                                                    <- return Nothing;
                                                                                   exps
                                                                                    <- sequence
                                                                                       [(do
                                                                                         val
                                                                                          <- return
                                                                                             (VStr " at ");
                                                                                         return (Val val)),
                                                                                        (do
                                                                                         exp1
                                                                                          <- return
                                                                                             (Var "&infix:~");
                                                                                         exp2
                                                                                          <- return Nothing;
                                                                                         exps
                                                                                          <- sequence
                                                                                             [return
                                                                                              (Var "$?CALLER::POSITION"),
                                                                                              (do
                                                                                               val
                                                                                                <- return
                                                                                                   (VStr "");
                                                                                               return (Val val))];
                                                                                         return (App exp1 exp2 exps))];
                                                                                   return (App exp1 exp2 exps))];
                                                                             return (App exp1 exp2 exps));
                                                                        return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                  return (Syn "=" exps));
                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 167 9 167 43)) exp));
                                                        exp2
                                                         <- (do
                                                             exp1
                                                              <- (do
                                                                  exps
                                                                   <- sequence
                                                                      [(do
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              pad
                                                                               <- fmap mkPad . sequence $ 
                                                                                      [(do
                                                                                        tvars
                                                                                         <- sequence
                                                                                            [(do
                                                                                              fresh
                                                                                               <- liftSTM (newTVar True);
                                                                                              tvar
                                                                                               <- (do
                                                                                                   vref
                                                                                                    <- newObject (mkType "Scalar");
                                                                                                   liftSTM (newTVar vref));
                                                                                              return (fresh, tvar))];
                                                                                        return ("$caller", tvars))];
                                                                              exp
                                                                               <- (do
                                                                                   exp1
                                                                                    <- (do
                                                                                        exps
                                                                                         <- sequence
                                                                                            [return
                                                                                             (Var "$caller"),
                                                                                             (do
                                                                                              exp
                                                                                               <- (do
                                                                                                   exp1
                                                                                                    <- return
                                                                                                       (Var "&infix:err");
                                                                                                   exp2
                                                                                                    <- return Nothing;
                                                                                                   exps
                                                                                                    <- sequence
                                                                                                       [(do
                                                                                                         exp1
                                                                                                          <- return
                                                                                                             (Var "&Control::Caller::caller");
                                                                                                         exp2
                                                                                                          <- return Nothing;
                                                                                                         exps
                                                                                                          <- sequence
                                                                                                             [(do
                                                                                                               exp
                                                                                                                <- (do
                                                                                                                    exp1
                                                                                                                     <- return
                                                                                                                        (Var "&infix:=>");
                                                                                                                    exp2
                                                                                                                     <- return Nothing;
                                                                                                                    exps
                                                                                                                     <- sequence
                                                                                                                        [(do
                                                                                                                          val
                                                                                                                           <- return
                                                                                                                              (VStr "skip");
                                                                                                                          return (Val val)),
                                                                                                                         (do
                                                                                                                          exp
                                                                                                                           <- (do
                                                                                                                               exp1
                                                                                                                                <- return
                                                                                                                                   (Var "&postfix:++");
                                                                                                                               exp2
                                                                                                                                <- return Nothing;
                                                                                                                               exps
                                                                                                                                <- sequence
                                                                                                                                   [return
                                                                                                                                    (Var "$i")];
                                                                                                                               return (App exp1 exp2 exps));
                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 173 58 173 62)) exp))];
                                                                                                                    return (App exp1 exp2 exps));
                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 173 50 173 62)) exp))];
                                                                                                         return (App exp1 exp2 exps)),
                                                                                                        (do
                                                                                                         exp1
                                                                                                          <- return
                                                                                                             (Var "&last");
                                                                                                         exp2
                                                                                                          <- return Nothing;
                                                                                                         exps
                                                                                                          <- sequence
                                                                                                             [];
                                                                                                         return (App exp1 exp2 exps))];
                                                                                                   return (App exp1 exp2 exps));
                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 173 26 173 72)) exp))];
                                                                                        return (Syn "=" exps));
                                                                                   exp2
                                                                                    <- (do
                                                                                        exp
                                                                                         <- (do
                                                                                             exps
                                                                                              <- sequence
                                                                                                 [return
                                                                                                  (Var "$mess"),
                                                                                                  (do
                                                                                                   exp
                                                                                                    <- (do
                                                                                                        exp1
                                                                                                         <- return
                                                                                                            (Var "&infix:~");
                                                                                                        exp2
                                                                                                         <- return Nothing;
                                                                                                        exps
                                                                                                         <- sequence
                                                                                                            [(do
                                                                                                              val
                                                                                                               <- return
                                                                                                                  (VStr "\n\t");
                                                                                                              return (Val val)),
                                                                                                             (do
                                                                                                              exp1
                                                                                                               <- return
                                                                                                                  (Var "&infix:~");
                                                                                                              exp2
                                                                                                               <- return Nothing;
                                                                                                              exps
                                                                                                               <- sequence
                                                                                                                  [(do
                                                                                                                    exps
                                                                                                                     <- sequence
                                                                                                                        [(do
                                                                                                                          exp
                                                                                                                           <- (do
                                                                                                                               exp1
                                                                                                                                <- return
                                                                                                                                   (Var "&package");
                                                                                                                               exp2
                                                                                                                                <- (do
                                                                                                                                    exp
                                                                                                                                     <- return
                                                                                                                                        (Var "$caller");
                                                                                                                                    return (Just exp));
                                                                                                                               exps
                                                                                                                                <- sequence
                                                                                                                                   [];
                                                                                                                               return (App exp1 exp2 exps));
                                                                                                                          return (Pos ((MkPos "src/perl6/Prelude.pm" 174 28 174 43)) exp))];
                                                                                                                    return (Syn "block" exps)),
                                                                                                                   (do
                                                                                                                    exp1
                                                                                                                     <- return
                                                                                                                        (Var "&infix:~");
                                                                                                                    exp2
                                                                                                                     <- return Nothing;
                                                                                                                    exps
                                                                                                                     <- sequence
                                                                                                                        [(do
                                                                                                                          val
                                                                                                                           <- return
                                                                                                                              (VStr "::");
                                                                                                                          return (Val val)),
                                                                                                                         (do
                                                                                                                          exp1
                                                                                                                           <- return
                                                                                                                              (Var "&infix:~");
                                                                                                                          exp2
                                                                                                                           <- return Nothing;
                                                                                                                          exps
                                                                                                                           <- sequence
                                                                                                                              [(do
                                                                                                                                exps
                                                                                                                                 <- sequence
                                                                                                                                    [(do
                                                                                                                                      exp
                                                                                                                                       <- (do
                                                                                                                                           exp1
                                                                                                                                            <- return
                                                                                                                                               (Var "&subname");
                                                                                                                                           exp2
                                                                                                                                            <- (do
                                                                                                                                                exp
                                                                                                                                                 <- return
                                                                                                                                                    (Var "$caller");
                                                                                                                                                return (Just exp));
                                                                                                                                           exps
                                                                                                                                            <- sequence
                                                                                                                                               [];
                                                                                                                                           return (App exp1 exp2 exps));
                                                                                                                                      return (Pos ((MkPos "src/perl6/Prelude.pm" 174 47 174 62)) exp))];
                                                                                                                                return (Syn "block" exps)),
                                                                                                                               (do
                                                                                                                                exp1
                                                                                                                                 <- return
                                                                                                                                    (Var "&infix:~");
                                                                                                                                exp2
                                                                                                                                 <- return Nothing;
                                                                                                                                exps
                                                                                                                                 <- sequence
                                                                                                                                    [(do
                                                                                                                                      val
                                                                                                                                       <- return
                                                                                                                                          (VStr "() at ");
                                                                                                                                      return (Val val)),
                                                                                                                                     (do
                                                                                                                                      exp1
                                                                                                                                       <- return
                                                                                                                                          (Var "&infix:~");
                                                                                                                                      exp2
                                                                                                                                       <- return Nothing;
                                                                                                                                      exps
                                                                                                                                       <- sequence
                                                                                                                                          [(do
                                                                                                                                            exps
                                                                                                                                             <- sequence
                                                                                                                                                [(do
                                                                                                                                                  exp
                                                                                                                                                   <- (do
                                                                                                                                                       exp1
                                                                                                                                                        <- return
                                                                                                                                                           (Var "&file");
                                                                                                                                                       exp2
                                                                                                                                                        <- (do
                                                                                                                                                            exp
                                                                                                                                                             <- return
                                                                                                                                                                (Var "$caller");
                                                                                                                                                            return (Just exp));
                                                                                                                                                       exps
                                                                                                                                                        <- sequence
                                                                                                                                                           [];
                                                                                                                                                       return (App exp1 exp2 exps));
                                                                                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 174 70 174 82)) exp))];
                                                                                                                                            return (Syn "block" exps)),
                                                                                                                                           (do
                                                                                                                                            exp1
                                                                                                                                             <- return
                                                                                                                                                (Var "&infix:~");
                                                                                                                                            exp2
                                                                                                                                             <- return Nothing;
                                                                                                                                            exps
                                                                                                                                             <- sequence
                                                                                                                                                [(do
                                                                                                                                                  val
                                                                                                                                                   <- return
                                                                                                                                                      (VStr " line ");
                                                                                                                                                  return (Val val)),
                                                                                                                                                 (do
                                                                                                                                                  exp1
                                                                                                                                                   <- return
                                                                                                                                                      (Var "&infix:~");
                                                                                                                                                  exp2
                                                                                                                                                   <- return Nothing;
                                                                                                                                                  exps
                                                                                                                                                   <- sequence
                                                                                                                                                      [(do
                                                                                                                                                        exps
                                                                                                                                                         <- sequence
                                                                                                                                                            [(do
                                                                                                                                                              exp
                                                                                                                                                               <- (do
                                                                                                                                                                   exp1
                                                                                                                                                                    <- return
                                                                                                                                                                       (Var "&line");
                                                                                                                                                                   exp2
                                                                                                                                                                    <- (do
                                                                                                                                                                        exp
                                                                                                                                                                         <- return
                                                                                                                                                                            (Var "$caller");
                                                                                                                                                                        return (Just exp));
                                                                                                                                                                   exps
                                                                                                                                                                    <- sequence
                                                                                                                                                                       [];
                                                                                                                                                                   return (App exp1 exp2 exps));
                                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 174 90 174 102)) exp))];
                                                                                                                                                        return (Syn "block" exps)),
                                                                                                                                                       (do
                                                                                                                                                        val
                                                                                                                                                         <- return
                                                                                                                                                            (VStr "");
                                                                                                                                                        return (Val val))];
                                                                                                                                                  return (App exp1 exp2 exps))];
                                                                                                                                            return (App exp1 exp2 exps))];
                                                                                                                                      return (App exp1 exp2 exps))];
                                                                                                                                return (App exp1 exp2 exps))];
                                                                                                                          return (App exp1 exp2 exps))];
                                                                                                                    return (App exp1 exp2 exps))];
                                                                                                              return (App exp1 exp2 exps))];
                                                                                                        return (App exp1 exp2 exps));
                                                                                                   return (Cxt (CxtItem (mkType "Str")) exp))];
                                                                                             return (Syn "~=" exps));
                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 174 13 174 104)) exp));
                                                                                   return (Stmts exp1 exp2));
                                                                              return (Pad SMy pad exp))];
                                                                        return (Syn "block" exps))];
                                                                  return (Syn "loop" exps));
                                                             exp2
                                                              <- (do
                                                                  exp
                                                                   <- return
                                                                      (Var "$mess");
                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 176 9 176 14)) exp));
                                                             return (Stmts exp1 exp2));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Carp::longmess",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = True, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$e", paramContext = CxtItem (mkType ":"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 165 33 165 35) (Val (VStr ""))}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Carp::longmess", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exp1
                                                              <- return
                                                                 (Var "&eval");
                                                             exp2
                                                              <- return Nothing;
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&slurp");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [return
                                                                             (Var "$filename")];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 127 14 127 29)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- return
                                                                       (Var "$lang");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 127 31 127 36)) exp))];
                                                             return (App exp1 exp2 exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 127 9 127 37)) exp));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Control::Basic::evalfile",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$filename", paramContext = CxtItem (mkType "Str"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$lang", paramContext = CxtItem (mkType "Str"), paramDefault = Pos (MkPos "src/perl6/Prelude.pm" 125 54 125 61) (Val (VStr "Perl6"))}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Basic::evalfile", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "file");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::file",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::file", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "line");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::line",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::line", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "package");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::package",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::package", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "params");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::params",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::params", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "sub");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::sub",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Code"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::sub", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "subname");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::subname",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::subname", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "subtype");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Control::Caller::subtype",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Control::Caller"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Control::Caller::subtype", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&readline");
                                                        exp2
                                                         <- (do
                                                             exp
                                                              <- return
                                                                 (Var "$?SELF");
                                                             return (Just exp));
                                                        exps
                                                         <- sequence
                                                            [];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 182 36 182 49)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&IO::shift",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "IO"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "%_", paramContext = CxtSlurpy (mkType "Hash"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&IO::shift", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&round_gen");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$^n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 290 19 290 22)) exp)),
                                                             (do
                                                              exp
                                                               <- return
                                                                  (Var "&do_ceil");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 290 24 290 32)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 290 9 291 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::ceiling",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "@_", paramContext = CxtSlurpy (mkType "Array"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::ceil", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&round_gen");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$^n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 290 19 290 22)) exp)),
                                                             (do
                                                              exp
                                                               <- return
                                                                  (Var "&do_ceil");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 290 24 290 32)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 290 9 291 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::ceiling",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "@_", paramContext = CxtSlurpy (mkType "Array"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::ceiling", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&infix:<");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$n"),
                                                                        (do
                                                                         val
                                                                          <- return
                                                                             (VInt 0);
                                                                         return (Val val))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 287 10 287 16)) exp)),
                                                             (do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&prefix:-");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp1
                                                                          <- return
                                                                             (Var "&int");
                                                                         exp2
                                                                          <- return Nothing;
                                                                         exps
                                                                          <- sequence
                                                                             [(do
                                                                               exp
                                                                                <- (do
                                                                                    exp1
                                                                                     <- return
                                                                                        (Var "&prefix:-");
                                                                                    exp2
                                                                                     <- return Nothing;
                                                                                    exps
                                                                                     <- sequence
                                                                                        [return
                                                                                         (Var "$n")];
                                                                                    return (App exp1 exp2 exps));
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 287 27 287 30)) exp))];
                                                                         return (App exp1 exp2 exps))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 287 21 287 33)) exp)),
                                                             (do
                                                              exp1
                                                               <- return
                                                                  (Var "&int");
                                                              exp2
                                                               <- return Nothing;
                                                              exps
                                                               <- sequence
                                                                  [(do
                                                                    exp
                                                                     <- (do
                                                                         exp1
                                                                          <- return
                                                                             (Var "&infix:+");
                                                                         exp2
                                                                          <- return Nothing;
                                                                         exps
                                                                          <- sequence
                                                                             [return
                                                                              (Var "$n"),
                                                                              (do
                                                                               val
                                                                                <- return
                                                                                   (VInt 1);
                                                                               return (Val val))];
                                                                         return (App exp1 exp2 exps));
                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 287 40 287 46)) exp))];
                                                              return (App exp1 exp2 exps))];
                                                        return (Syn "if" exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 287 9 288 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::do_ceil",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::do_ceil", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&infix:<");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$n"),
                                                                        (do
                                                                         val
                                                                          <- return
                                                                             (VInt 0);
                                                                         return (Val val))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 295 10 295 16)) exp)),
                                                             (do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&prefix:-");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp1
                                                                          <- return
                                                                             (Var "&int");
                                                                         exp2
                                                                          <- return Nothing;
                                                                         exps
                                                                          <- sequence
                                                                             [(do
                                                                               exp
                                                                                <- (do
                                                                                    exp1
                                                                                     <- return
                                                                                        (Var "&infix:-");
                                                                                    exp2
                                                                                     <- return Nothing;
                                                                                    exps
                                                                                     <- sequence
                                                                                        [(do
                                                                                          val
                                                                                           <- return
                                                                                              (VInt 1);
                                                                                          return (Val val)),
                                                                                         return
                                                                                         (Var "$n")];
                                                                                    return (App exp1 exp2 exps));
                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 295 27 295 31)) exp))];
                                                                         return (App exp1 exp2 exps))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 295 21 295 34)) exp)),
                                                             (do
                                                              exp1
                                                               <- return
                                                                  (Var "&int");
                                                              exp2
                                                               <- return Nothing;
                                                              exps
                                                               <- sequence
                                                                  [(do
                                                                    exp
                                                                     <- return
                                                                        (Var "$n");
                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 295 41 295 43)) exp))];
                                                              return (App exp1 exp2 exps))];
                                                        return (Syn "if" exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 295 9 296 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::do_floor",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::do_floor", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&infix:<");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [return
                                                                             (Var "$n"),
                                                                             (do
                                                                              val
                                                                               <- return
                                                                                  (VInt 0);
                                                                              return (Val val))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 275 10 275 16)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&int");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- (do
                                                                                   exp1
                                                                                    <- return
                                                                                       (Var "&infix:-");
                                                                                   exp2
                                                                                    <- return Nothing;
                                                                                   exps
                                                                                    <- sequence
                                                                                       [return
                                                                                        (Var "$n"),
                                                                                        (do
                                                                                         val
                                                                                          <- return
                                                                                             (VRat (1%2));
                                                                                         return (Val val))];
                                                                                   return (App exp1 exp2 exps));
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 275 26 275 34)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 275 21 275 36)) exp)),
                                                                  (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&int");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp
                                                                          <- (do
                                                                              exp1
                                                                               <- return
                                                                                  (Var "&infix:+");
                                                                              exp2
                                                                               <- return Nothing;
                                                                              exps
                                                                               <- sequence
                                                                                  [return
                                                                                   (Var "$n"),
                                                                                   (do
                                                                                    val
                                                                                     <- return
                                                                                        (VRat (1%2));
                                                                                    return (Val val))];
                                                                              return (App exp1 exp2 exps));
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 275 43 275 51)) exp))];
                                                                   return (App exp1 exp2 exps))];
                                                             return (Syn "if" exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 275 9 275 52)) exp));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::do_round",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::do_round", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&round_gen");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$^n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 298 19 298 22)) exp)),
                                                             (do
                                                              exp
                                                               <- return
                                                                  (Var "&do_floor");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 298 24 298 33)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 298 9 299 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::floor",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "@_", paramContext = CxtSlurpy (mkType "Array"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::floor", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&round_gen");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 278 19 278 21)) exp)),
                                                             (do
                                                              exp
                                                               <- return
                                                                  (Var "&do_round");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 278 23 278 32)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 278 9 279 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::round",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::round", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&infix:==");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp1
                                                                               <- return
                                                                                  (Var "&int");
                                                                              exp2
                                                                               <- return Nothing;
                                                                              exps
                                                                               <- sequence
                                                                                  [(do
                                                                                    exp
                                                                                     <- return
                                                                                        (Var "$n");
                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 271 14 271 16)) exp))];
                                                                              return (App exp1 exp2 exps)),
                                                                             return
                                                                             (Var "$n")];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 271 10 271 23)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&int");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$n");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 271 32 271 34)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 271 28 271 36)) exp)),
                                                                  (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "$corner");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp
                                                                          <- return
                                                                             (Var "$n");
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 271 47 271 49)) exp))];
                                                                   return (App exp1 exp2 exps))];
                                                             return (Syn "if" exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 271 9 271 50)) exp));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Num::round_gen",
                                                        subType = SubRoutine,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Num"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$corner", paramContext = CxtItem (mkType "Code"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar)),
                   (do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- return
                                                       (Var "$n");
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 268 9 269 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Num::round_gen",
                                                        subType = SubRoutine,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Int"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$corner", paramContext = CxtItem (mkType "Code"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::round_gen", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&int");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 282 13 282 15)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 282 9 283 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::truncate",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::trunc", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&int");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- return
                                                                  (Var "$n");
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 282 13 282 15)) exp))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 282 9 283 5)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Num::truncate",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$n", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Num::truncate", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&all");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp
                                                                          <- return
                                                                             (Var "$r");
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 68 51 68 53)) exp)),
                                                                        (do
                                                                         exp
                                                                          <- return
                                                                             (Var "$w");
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 68 55 68 57)) exp))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 68 47 68 58)) exp)),
                                                             (do
                                                              exp
                                                               <- (do
                                                                   exp1
                                                                    <- return
                                                                       (Var "&die");
                                                                   exp2
                                                                    <- return Nothing;
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         exp
                                                                          <- (do
                                                                              val
                                                                               <- return
                                                                                  (VStr "Pipe::open is unidirectional");
                                                                              return (Val val));
                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 68 13 68 44)) exp))];
                                                                   return (App exp1 exp2 exps));
                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 68 9 68 44)) exp)),
                                                             return
                                                             (Noop)];
                                                        return (Syn "if" exps));
                                                   exp2
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&none");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$r");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 69 33 69 35)) exp)),
                                                                             (do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$w");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 69 37 69 39)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 69 28 69 40)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exps
                                                                         <- sequence
                                                                            [return
                                                                             (Var "$r"),
                                                                             (do
                                                                              exp1
                                                                               <- return
                                                                                  (Var "&bool::true");
                                                                              exp2
                                                                               <- return Nothing;
                                                                              exps
                                                                               <- sequence
                                                                                  [];
                                                                              return (App exp1 exp2 exps))];
                                                                        return (Syn "=" exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 69 9 69 25)) exp)),
                                                                  return
                                                                  (Noop)];
                                                             return (Syn "if" exps));
                                                        exp2
                                                         <- (do
                                                             pad
                                                              <- fmap mkPad . sequence $ 
                                                                     [(do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Scalar");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("$err", tvars)),
                                                                      (do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Scalar");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("$in", tvars)),
                                                                      (do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Scalar");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("$out", tvars))];
                                                             exp
                                                              <- (do
                                                                  exp1
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [(do
                                                                             exps
                                                                              <- sequence
                                                                                 [return
                                                                                  (Var "$in"),
                                                                                  return
                                                                                  (Var "$out"),
                                                                                  return
                                                                                  (Var "$err"),
                                                                                  (do
                                                                                   val
                                                                                    <- return
                                                                                       (VUndef);
                                                                                   return (Val val))];
                                                                             return (Syn "," exps)),
                                                                            (do
                                                                             exp
                                                                              <- (do
                                                                                  exp1
                                                                                   <- return
                                                                                      (Var "&Pugs::Internals::runInteractiveCommand");
                                                                                  exp2
                                                                                   <- return Nothing;
                                                                                  exps
                                                                                   <- sequence
                                                                                      [(do
                                                                                        exp
                                                                                         <- return
                                                                                            (Var "$command");
                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 71 52 71 60)) exp))];
                                                                                  return (App exp1 exp2 exps));
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 71 13 71 61)) exp))];
                                                                       return (Syn "=" exps));
                                                                  exp2
                                                                   <- (do
                                                                       exp1
                                                                        <- (do
                                                                            exp
                                                                             <- (do
                                                                                 exp1
                                                                                  <- return
                                                                                     (Var "&close");
                                                                                 exp2
                                                                                  <- return Nothing;
                                                                                 exps
                                                                                  <- sequence
                                                                                     [return
                                                                                      (Var "$err")];
                                                                                 return (App exp1 exp2 exps));
                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 72 9 72 19)) exp));
                                                                       exp2
                                                                        <- (do
                                                                            exp1
                                                                             <- (do
                                                                                 exp
                                                                                  <- (do
                                                                                      exp1
                                                                                       <- return
                                                                                          (Var "&close");
                                                                                      exp2
                                                                                       <- return Nothing;
                                                                                      exps
                                                                                       <- sequence
                                                                                          [(do
                                                                                            exp
                                                                                             <- (do
                                                                                                 exps
                                                                                                  <- sequence
                                                                                                     [return
                                                                                                      (Var "$r"),
                                                                                                      (do
                                                                                                       exp
                                                                                                        <- return
                                                                                                           (Var "$in");
                                                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 73 23 73 27)) exp)),
                                                                                                      return
                                                                                                      (Var "$out")];
                                                                                                 return (Syn "if" exps));
                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 73 16 73 35)) exp))];
                                                                                      return (App exp1 exp2 exps));
                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 73 9 73 35)) exp));
                                                                            exp2
                                                                             <- (do
                                                                                 exp
                                                                                  <- (do
                                                                                      exps
                                                                                       <- sequence
                                                                                          [return
                                                                                           (Var "$r"),
                                                                                           (do
                                                                                            exp
                                                                                             <- return
                                                                                                (Var "$out");
                                                                                            return (Pos ((MkPos "src/perl6/Prelude.pm" 74 16 74 21)) exp)),
                                                                                           return
                                                                                           (Var "$in")];
                                                                                      return (Syn "if" exps));
                                                                                 return (Pos ((MkPos "src/perl6/Prelude.pm" 74 9 74 28)) exp));
                                                                            return (Stmts exp1 exp2));
                                                                       return (Stmts exp1 exp2));
                                                                  return (Stmts exp1 exp2));
                                                             return (Pad SMy pad exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Pipe::open",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$command", paramContext = CxtItem (mkType "Str"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = False, isWritable = True, isLazy = False, paramName = "$r", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = True, isNamed = False, isLValue = True, isWritable = False, isLazy = False, paramName = "$w", paramContext = CxtItem (mkType "Bool"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "IO"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Pipe::open", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$err", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$in", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$out", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$pid", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$in"),
                                                                        return
                                                                        (Var "$out"),
                                                                        return
                                                                        (Var "$err"),
                                                                        return
                                                                        (Var "$pid")];
                                                                   return (Syn "," exps)),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&Pugs::Internals::runInteractiveCommand");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$command");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 81 52 81 60)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 81 13 81 61)) exp))];
                                                             return (Syn "=" exps));
                                                        exp2
                                                         <- (do
                                                             exp1
                                                              <- (do
                                                                  exp
                                                                   <- (do
                                                                       exp1
                                                                        <- return
                                                                           (Var "&close");
                                                                       exp2
                                                                        <- return Nothing;
                                                                       exps
                                                                        <- sequence
                                                                           [return
                                                                            (Var "$err")];
                                                                       return (App exp1 exp2 exps));
                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 82 9 82 19)) exp));
                                                             exp2
                                                              <- (do
                                                                  exp
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [return
                                                                            (Var "$in"),
                                                                            return
                                                                            (Var "$out"),
                                                                            return
                                                                            (Var "$pid")];
                                                                       return (Syn "," exps));
                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 83 9 83 26)) exp));
                                                             return (Stmts exp1 exp2));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Pipe::open2",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$command", paramContext = CxtItem (mkType "Str"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "List"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Pipe::open2", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$err", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$in", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$out", tvars)),
                                                            (do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- newObject (mkType "Scalar");
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("$pid", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exps
                                                                    <- sequence
                                                                       [return
                                                                        (Var "$in"),
                                                                        return
                                                                        (Var "$out"),
                                                                        return
                                                                        (Var "$err"),
                                                                        return
                                                                        (Var "$pid")];
                                                                   return (Syn "," exps)),
                                                                  (do
                                                                   exp
                                                                    <- (do
                                                                        exp1
                                                                         <- return
                                                                            (Var "&Pugs::Internals::runInteractiveCommand");
                                                                        exp2
                                                                         <- return Nothing;
                                                                        exps
                                                                         <- sequence
                                                                            [(do
                                                                              exp
                                                                               <- return
                                                                                  (Var "$command");
                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 92 52 92 60)) exp))];
                                                                        return (App exp1 exp2 exps));
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 92 13 92 61)) exp))];
                                                             return (Syn "=" exps));
                                                        exp2
                                                         <- (do
                                                             exp
                                                              <- (do
                                                                  exps
                                                                   <- sequence
                                                                      [return
                                                                       (Var "$in"),
                                                                       return
                                                                       (Var "$out"),
                                                                       return
                                                                       (Var "$err"),
                                                                       return
                                                                       (Var "$pid")];
                                                                  return (Syn "," exps));
                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 93 9 93 32)) exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = True,
                                                        subName = "&Pipe::open3",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$command", paramContext = CxtItem (mkType "Str"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "List"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Pipe::open3", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exp1
                                                              <- return
                                                                 (Var "$code");
                                                             exp2
                                                              <- return Nothing;
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- return
                                                                       (Var "$obj");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 213 11 213 15)) exp))];
                                                             return (App exp1 exp2 exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 213 5 213 16)) exp));
                                                   exp2
                                                    <- (do
                                                        exp
                                                         <- return
                                                            (Var "$obj");
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 214 5 214 9)) exp));
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Pugs::Internals::but_block",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$obj", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$code", paramContext = CxtItem (mkType "Code"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Pugs::Internals::but_block", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp1
                                                    <- (do
                                                        exp
                                                         <- (do
                                                             exp1
                                                              <- return
                                                                 (Var "&sprintf");
                                                             exp2
                                                              <- return Nothing;
                                                             exps
                                                              <- sequence
                                                                 [(do
                                                                   exp
                                                                    <- return
                                                                       (Var "$fmt");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 359 13 359 17)) exp)),
                                                                  (do
                                                                   exp
                                                                    <- return
                                                                       (Var "$obj");
                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 359 18 359 22)) exp))];
                                                             return (App exp1 exp2 exps));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 359 5 359 23)) exp));
                                                   exp2
                                                    <- return
                                                       (Noop);
                                                   return (Stmts exp1 exp2))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Scalar::as",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$obj", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$fmt", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Scalar::as", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- return
                                                            (Var "&prefix:=");
                                                        exp2
                                                         <- return Nothing;
                                                        exps
                                                         <- sequence
                                                            [(do
                                                              exp1
                                                               <- return
                                                                  (Var "&open");
                                                              exp2
                                                               <- return Nothing;
                                                              exps
                                                               <- sequence
                                                                  [(do
                                                                    exp
                                                                     <- return
                                                                        (Var "$self");
                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 190 49 190 54)) exp))];
                                                              return (App exp1 exp2 exps))];
                                                        return (App exp1 exp2 exps));
                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 190 43 190 56)) exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Str::shift",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$self", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "%_", paramContext = CxtSlurpy (mkType "Hash"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Str::shift", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exps
                                              <- sequence
                                                 [(do
                                                   pad
                                                    <- fmap mkPad . sequence $ 
                                                           [(do
                                                             tvars
                                                              <- sequence
                                                                 [(do
                                                                   fresh
                                                                    <- liftSTM (newTVar True);
                                                                   tvar
                                                                    <- (do
                                                                        vref
                                                                         <- (do
                                                                             sv
                                                                              <- (do
                                                                                  code
                                                                                   <- (do
                                                                                       body
                                                                                        <- (do
                                                                                            exps
                                                                                             <- sequence
                                                                                                [(do
                                                                                                  exp1
                                                                                                   <- (do
                                                                                                       exps
                                                                                                        <- sequence
                                                                                                           [(do
                                                                                                             exp
                                                                                                              <- (do
                                                                                                                  exp1
                                                                                                                   <- return
                                                                                                                      (Var "&infix:~~");
                                                                                                                  exp2
                                                                                                                   <- return Nothing;
                                                                                                                  exps
                                                                                                                   <- sequence
                                                                                                                      [return
                                                                                                                       (Var "$string"),
                                                                                                                       (do
                                                                                                                        exps
                                                                                                                         <- sequence
                                                                                                                            [(do
                                                                                                                              exp
                                                                                                                               <- (do
                                                                                                                                   val
                                                                                                                                    <- return
                                                                                                                                       (VStr "([^-]+)\\-([^-]+)");
                                                                                                                                   return (Val val));
                                                                                                                              return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                                                             (do
                                                                                                                              exps
                                                                                                                               <- sequence
                                                                                                                                  [(do
                                                                                                                                    exps
                                                                                                                                     <- sequence
                                                                                                                                        [(do
                                                                                                                                          exp1
                                                                                                                                           <- return
                                                                                                                                              (Var "&infix:=>");
                                                                                                                                          exp2
                                                                                                                                           <- return Nothing;
                                                                                                                                          exps
                                                                                                                                           <- sequence
                                                                                                                                              [(do
                                                                                                                                                val
                                                                                                                                                 <- return
                                                                                                                                                    (VStr "P5");
                                                                                                                                                return (Val val)),
                                                                                                                                               (do
                                                                                                                                                val
                                                                                                                                                 <- return
                                                                                                                                                    (VInt 1);
                                                                                                                                                return (Val val))];
                                                                                                                                          return (App exp1 exp2 exps))];
                                                                                                                                    return (Syn "," exps))];
                                                                                                                              return (Syn "\\{}" exps))];
                                                                                                                        return (Syn "match" exps))];
                                                                                                                  return (App exp1 exp2 exps));
                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 195 13 195 46)) exp)),
                                                                                                            (do
                                                                                                             exps
                                                                                                              <- sequence
                                                                                                                 [(do
                                                                                                                   exp1
                                                                                                                    <- (do
                                                                                                                        exp
                                                                                                                         <- (do
                                                                                                                             exp1
                                                                                                                              <- return
                                                                                                                                 (Var "&infix:..");
                                                                                                                             exp2
                                                                                                                              <- return Nothing;
                                                                                                                             exps
                                                                                                                              <- sequence
                                                                                                                                 [(do
                                                                                                                                   exp
                                                                                                                                    <- (do
                                                                                                                                        exp1
                                                                                                                                         <- return
                                                                                                                                            (Var "&prefix:~");
                                                                                                                                        exp2
                                                                                                                                         <- return Nothing;
                                                                                                                                        exps
                                                                                                                                         <- sequence
                                                                                                                                            [(do
                                                                                                                                              exps
                                                                                                                                               <- sequence
                                                                                                                                                  [return
                                                                                                                                                   (Var "$/"),
                                                                                                                                                   (do
                                                                                                                                                    val
                                                                                                                                                     <- return
                                                                                                                                                        (VInt 0);
                                                                                                                                                    return (Val val))];
                                                                                                                                              return (Syn "[]" exps))];
                                                                                                                                        return (App exp1 exp2 exps));
                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 196 12 196 16)) exp)),
                                                                                                                                  (do
                                                                                                                                   exp
                                                                                                                                    <- (do
                                                                                                                                        exp1
                                                                                                                                         <- return
                                                                                                                                            (Var "&prefix:~");
                                                                                                                                        exp2
                                                                                                                                         <- return Nothing;
                                                                                                                                        exps
                                                                                                                                         <- sequence
                                                                                                                                            [(do
                                                                                                                                              exps
                                                                                                                                               <- sequence
                                                                                                                                                  [return
                                                                                                                                                   (Var "$/"),
                                                                                                                                                   (do
                                                                                                                                                    val
                                                                                                                                                     <- return
                                                                                                                                                        (VInt 1);
                                                                                                                                                    return (Val val))];
                                                                                                                                              return (Syn "[]" exps))];
                                                                                                                                        return (App exp1 exp2 exps));
                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 196 20 196 24)) exp))];
                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 196 11 196 25)) exp));
                                                                                                                   exp2
                                                                                                                    <- return
                                                                                                                       (Noop);
                                                                                                                   return (Stmts exp1 exp2))];
                                                                                                             return (Syn "block" exps)),
                                                                                                            (do
                                                                                                             exps
                                                                                                              <- sequence
                                                                                                                 [(do
                                                                                                                   exp1
                                                                                                                    <- (do
                                                                                                                        exp
                                                                                                                         <- return
                                                                                                                            (Var "$string");
                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 198 11 198 18)) exp));
                                                                                                                   exp2
                                                                                                                    <- return
                                                                                                                       (Noop);
                                                                                                                   return (Stmts exp1 exp2))];
                                                                                                             return (Syn "block" exps))];
                                                                                                       return (Syn "if" exps));
                                                                                                  exp2
                                                                                                   <- return
                                                                                                      (Noop);
                                                                                                  return (Stmts exp1 exp2))];
                                                                                            return (Syn "block" exps));
                                                                                       return (MkCode {isMulti = False,
                                                                                                       subName = "&expand",
                                                                                                       subType = SubRoutine,
                                                                                                       subEnv = Nothing,
                                                                                                       subAssoc = "pre",
                                                                                                       subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$string", paramContext = CxtItem (mkType "Str"), paramDefault = Noop}],
                                                                                                       subBindings = [],
                                                                                                       subSlurpLimit = [],
                                                                                                       subReturns = (mkType "Any"),
                                                                                                       subLValue = False,
                                                                                                       subBody = body,
                                                                                                       subCont = Nothing}));
                                                                                  return $ VCode code);
                                                                             return (MkRef $ IScalar sv));
                                                                        liftSTM (newTVar vref));
                                                                   return (fresh, tvar))];
                                                             return ("&expand", tvars))];
                                                   exp
                                                    <- (do
                                                        exp1
                                                         <- (do
                                                             exps
                                                              <- sequence
                                                                 [return
                                                                  (Var "&expand"),
                                                                  (do
                                                                   exps
                                                                    <- sequence
                                                                       [(do
                                                                         val
                                                                          <- (do
                                                                              code
                                                                               <- (do
                                                                                   body
                                                                                    <- (do
                                                                                        exps
                                                                                         <- sequence
                                                                                            [(do
                                                                                              exp1
                                                                                               <- (do
                                                                                                   exps
                                                                                                    <- sequence
                                                                                                       [(do
                                                                                                         exp
                                                                                                          <- (do
                                                                                                              exp1
                                                                                                               <- return
                                                                                                                  (Var "&infix:~~");
                                                                                                              exp2
                                                                                                               <- return Nothing;
                                                                                                              exps
                                                                                                               <- sequence
                                                                                                                  [return
                                                                                                                   (Var "$string"),
                                                                                                                   (do
                                                                                                                    exps
                                                                                                                     <- sequence
                                                                                                                        [(do
                                                                                                                          exp
                                                                                                                           <- (do
                                                                                                                               val
                                                                                                                                <- return
                                                                                                                                   (VStr "([^-]+)\\-([^-]+)");
                                                                                                                               return (Val val));
                                                                                                                          return (Cxt (CxtItem (mkType "Str")) exp)),
                                                                                                                         (do
                                                                                                                          exps
                                                                                                                           <- sequence
                                                                                                                              [(do
                                                                                                                                exps
                                                                                                                                 <- sequence
                                                                                                                                    [(do
                                                                                                                                      exp1
                                                                                                                                       <- return
                                                                                                                                          (Var "&infix:=>");
                                                                                                                                      exp2
                                                                                                                                       <- return Nothing;
                                                                                                                                      exps
                                                                                                                                       <- sequence
                                                                                                                                          [(do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VStr "P5");
                                                                                                                                            return (Val val)),
                                                                                                                                           (do
                                                                                                                                            val
                                                                                                                                             <- return
                                                                                                                                                (VInt 1);
                                                                                                                                            return (Val val))];
                                                                                                                                      return (App exp1 exp2 exps))];
                                                                                                                                return (Syn "," exps))];
                                                                                                                          return (Syn "\\{}" exps))];
                                                                                                                    return (Syn "match" exps))];
                                                                                                              return (App exp1 exp2 exps));
                                                                                                         return (Pos ((MkPos "src/perl6/Prelude.pm" 195 13 195 46)) exp)),
                                                                                                        (do
                                                                                                         exps
                                                                                                          <- sequence
                                                                                                             [(do
                                                                                                               exp1
                                                                                                                <- (do
                                                                                                                    exp
                                                                                                                     <- (do
                                                                                                                         exp1
                                                                                                                          <- return
                                                                                                                             (Var "&infix:..");
                                                                                                                         exp2
                                                                                                                          <- return Nothing;
                                                                                                                         exps
                                                                                                                          <- sequence
                                                                                                                             [(do
                                                                                                                               exp
                                                                                                                                <- (do
                                                                                                                                    exp1
                                                                                                                                     <- return
                                                                                                                                        (Var "&prefix:~");
                                                                                                                                    exp2
                                                                                                                                     <- return Nothing;
                                                                                                                                    exps
                                                                                                                                     <- sequence
                                                                                                                                        [(do
                                                                                                                                          exps
                                                                                                                                           <- sequence
                                                                                                                                              [return
                                                                                                                                               (Var "$/"),
                                                                                                                                               (do
                                                                                                                                                val
                                                                                                                                                 <- return
                                                                                                                                                    (VInt 0);
                                                                                                                                                return (Val val))];
                                                                                                                                          return (Syn "[]" exps))];
                                                                                                                                    return (App exp1 exp2 exps));
                                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 196 12 196 16)) exp)),
                                                                                                                              (do
                                                                                                                               exp
                                                                                                                                <- (do
                                                                                                                                    exp1
                                                                                                                                     <- return
                                                                                                                                        (Var "&prefix:~");
                                                                                                                                    exp2
                                                                                                                                     <- return Nothing;
                                                                                                                                    exps
                                                                                                                                     <- sequence
                                                                                                                                        [(do
                                                                                                                                          exps
                                                                                                                                           <- sequence
                                                                                                                                              [return
                                                                                                                                               (Var "$/"),
                                                                                                                                               (do
                                                                                                                                                val
                                                                                                                                                 <- return
                                                                                                                                                    (VInt 1);
                                                                                                                                                return (Val val))];
                                                                                                                                          return (Syn "[]" exps))];
                                                                                                                                    return (App exp1 exp2 exps));
                                                                                                                               return (Pos ((MkPos "src/perl6/Prelude.pm" 196 20 196 24)) exp))];
                                                                                                                         return (App exp1 exp2 exps));
                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 196 11 196 25)) exp));
                                                                                                               exp2
                                                                                                                <- return
                                                                                                                   (Noop);
                                                                                                               return (Stmts exp1 exp2))];
                                                                                                         return (Syn "block" exps)),
                                                                                                        (do
                                                                                                         exps
                                                                                                          <- sequence
                                                                                                             [(do
                                                                                                               exp1
                                                                                                                <- (do
                                                                                                                    exp
                                                                                                                     <- return
                                                                                                                        (Var "$string");
                                                                                                                    return (Pos ((MkPos "src/perl6/Prelude.pm" 198 11 198 18)) exp));
                                                                                                               exp2
                                                                                                                <- return
                                                                                                                   (Noop);
                                                                                                               return (Stmts exp1 exp2))];
                                                                                                         return (Syn "block" exps))];
                                                                                                   return (Syn "if" exps));
                                                                                              exp2
                                                                                               <- return
                                                                                                  (Noop);
                                                                                              return (Stmts exp1 exp2))];
                                                                                        return (Syn "block" exps));
                                                                                   return (MkCode {isMulti = False,
                                                                                                   subName = "&expand",
                                                                                                   subType = SubRoutine,
                                                                                                   subEnv = Nothing,
                                                                                                   subAssoc = "pre",
                                                                                                   subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$string", paramContext = CxtItem (mkType "Str"), paramDefault = Noop}],
                                                                                                   subBindings = [],
                                                                                                   subSlurpLimit = [],
                                                                                                   subReturns = (mkType "Any"),
                                                                                                   subLValue = False,
                                                                                                   subBody = body,
                                                                                                   subCont = Nothing}));
                                                                              return $ VCode code);
                                                                         return (Val val))];
                                                                   return (Syn "sub" exps))];
                                                             return (Syn ":=" exps));
                                                        exp2
                                                         <- (do
                                                             pad
                                                              <- fmap mkPad . sequence $ 
                                                                     [(do
                                                                       tvars
                                                                        <- sequence
                                                                           [(do
                                                                             fresh
                                                                              <- liftSTM (newTVar True);
                                                                             tvar
                                                                              <- (do
                                                                                  vref
                                                                                   <- newObject (mkType "Hash");
                                                                                  liftSTM (newTVar vref));
                                                                             return (fresh, tvar))];
                                                                       return ("%transtable", tvars))];
                                                             exp
                                                              <- (do
                                                                  exp1
                                                                   <- (do
                                                                       exps
                                                                        <- sequence
                                                                           [return
                                                                            (Var "%transtable"),
                                                                            (do
                                                                             exp
                                                                              <- (do
                                                                                  exp1
                                                                                   <- return
                                                                                      (Var "&map");
                                                                                  exp2
                                                                                   <- return Nothing;
                                                                                  exps
                                                                                   <- sequence
                                                                                      [(do
                                                                                        exp
                                                                                         <- (do
                                                                                             exps
                                                                                              <- sequence
                                                                                                 [(do
                                                                                                   val
                                                                                                    <- (do
                                                                                                        code
                                                                                                         <- (do
                                                                                                             body
                                                                                                              <- (do
                                                                                                                  exps
                                                                                                                   <- sequence
                                                                                                                      [(do
                                                                                                                        exp1
                                                                                                                         <- (do
                                                                                                                             exp
                                                                                                                              <- return
                                                                                                                                 (Noop);
                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 204 26 204 27)) exp));
                                                                                                                        exp2
                                                                                                                         <- (do
                                                                                                                             exp
                                                                                                                              <- (do
                                                                                                                                  exp1
                                                                                                                                   <- return
                                                                                                                                      (Var "&zip");
                                                                                                                                  exp2
                                                                                                                                   <- return Nothing;
                                                                                                                                  exps
                                                                                                                                   <- sequence
                                                                                                                                      [(do
                                                                                                                                        exp
                                                                                                                                         <- (do
                                                                                                                                             exp1
                                                                                                                                              <- return
                                                                                                                                                 (Var "&split");
                                                                                                                                             exp2
                                                                                                                                              <- return Nothing;
                                                                                                                                             exps
                                                                                                                                              <- sequence
                                                                                                                                                 [(do
                                                                                                                                                   exp
                                                                                                                                                    <- (do
                                                                                                                                                        val
                                                                                                                                                         <- return
                                                                                                                                                            (VStr "");
                                                                                                                                                        return (Val val));
                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 204 37 204 39)) exp)),
                                                                                                                                                  (do
                                                                                                                                                   exp
                                                                                                                                                    <- (do
                                                                                                                                                        exp1
                                                                                                                                                         <- return
                                                                                                                                                            (Var "&key");
                                                                                                                                                        exp2
                                                                                                                                                         <- (do
                                                                                                                                                             exp
                                                                                                                                                              <- return
                                                                                                                                                                 (Var "$_");
                                                                                                                                                             return (Just exp));
                                                                                                                                                        exps
                                                                                                                                                         <- sequence
                                                                                                                                                            [];
                                                                                                                                                        return (App exp1 exp2 exps));
                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 204 40 204 46)) exp))];
                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 204 31 204 47)) exp)),
                                                                                                                                       (do
                                                                                                                                        exp
                                                                                                                                         <- (do
                                                                                                                                             exp1
                                                                                                                                              <- return
                                                                                                                                                 (Var "&split");
                                                                                                                                             exp2
                                                                                                                                              <- return Nothing;
                                                                                                                                             exps
                                                                                                                                              <- sequence
                                                                                                                                                 [(do
                                                                                                                                                   exp
                                                                                                                                                    <- (do
                                                                                                                                                        val
                                                                                                                                                         <- return
                                                                                                                                                            (VStr "");
                                                                                                                                                        return (Val val));
                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 204 54 204 56)) exp)),
                                                                                                                                                  (do
                                                                                                                                                   exp
                                                                                                                                                    <- (do
                                                                                                                                                        exp1
                                                                                                                                                         <- return
                                                                                                                                                            (Var "&value");
                                                                                                                                                        exp2
                                                                                                                                                         <- (do
                                                                                                                                                             exp
                                                                                                                                                              <- return
                                                                                                                                                                 (Var "$_");
                                                                                                                                                             return (Just exp));
                                                                                                                                                        exps
                                                                                                                                                         <- sequence
                                                                                                                                                            [];
                                                                                                                                                        return (App exp1 exp2 exps));
                                                                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 204 57 204 65)) exp))];
                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 204 48 204 66)) exp))];
                                                                                                                                  return (App exp1 exp2 exps));
                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 204 27 204 67)) exp));
                                                                                                                        return (Stmts exp1 exp2))];
                                                                                                                  return (Syn "block" exps));
                                                                                                             return (MkCode {isMulti = False,
                                                                                                                             subName = "<anon>",
                                                                                                                             subType = SubBlock,
                                                                                                                             subEnv = Nothing,
                                                                                                                             subAssoc = "pre",
                                                                                                                             subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$_", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                                                                                             subBindings = [],
                                                                                                                             subSlurpLimit = [],
                                                                                                                             subReturns = (mkType "Any"),
                                                                                                                             subLValue = False,
                                                                                                                             subBody = body,
                                                                                                                             subCont = Nothing}));
                                                                                                        return $ VCode code);
                                                                                                   return (Val val))];
                                                                                             return (Syn "sub" exps));
                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 205 20 205 20)) exp)),
                                                                                       (do
                                                                                        exp
                                                                                         <- (do
                                                                                             exp1
                                                                                              <- return
                                                                                                 (Var "&map");
                                                                                             exp2
                                                                                              <- return Nothing;
                                                                                             exps
                                                                                              <- sequence
                                                                                                 [(do
                                                                                                   exp
                                                                                                    <- (do
                                                                                                        exps
                                                                                                         <- sequence
                                                                                                            [(do
                                                                                                              val
                                                                                                               <- (do
                                                                                                                   code
                                                                                                                    <- (do
                                                                                                                        body
                                                                                                                         <- (do
                                                                                                                             exps
                                                                                                                              <- sequence
                                                                                                                                 [(do
                                                                                                                                   exp1
                                                                                                                                    <- (do
                                                                                                                                        exp
                                                                                                                                         <- return
                                                                                                                                            (Noop);
                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 205 24 205 25)) exp));
                                                                                                                                   exp2
                                                                                                                                    <- (do
                                                                                                                                        exp
                                                                                                                                         <- (do
                                                                                                                                             exp1
                                                                                                                                              <- return
                                                                                                                                                 (Var "&infix:=>");
                                                                                                                                             exp2
                                                                                                                                              <- return Nothing;
                                                                                                                                             exps
                                                                                                                                              <- sequence
                                                                                                                                                 [(do
                                                                                                                                                   exp1
                                                                                                                                                    <- return
                                                                                                                                                       (Var "&expand");
                                                                                                                                                   exp2
                                                                                                                                                    <- return Nothing;
                                                                                                                                                   exps
                                                                                                                                                    <- sequence
                                                                                                                                                       [(do
                                                                                                                                                         exp1
                                                                                                                                                          <- return
                                                                                                                                                             (Var "&key");
                                                                                                                                                         exp2
                                                                                                                                                          <- (do
                                                                                                                                                              exp
                                                                                                                                                               <- return
                                                                                                                                                                  (Var "$_");
                                                                                                                                                              return (Just exp));
                                                                                                                                                         exps
                                                                                                                                                          <- sequence
                                                                                                                                                             [];
                                                                                                                                                         return (App exp1 exp2 exps))];
                                                                                                                                                   return (App exp1 exp2 exps)),
                                                                                                                                                  (do
                                                                                                                                                   exp1
                                                                                                                                                    <- return
                                                                                                                                                       (Var "&expand");
                                                                                                                                                   exp2
                                                                                                                                                    <- return Nothing;
                                                                                                                                                   exps
                                                                                                                                                    <- sequence
                                                                                                                                                       [(do
                                                                                                                                                         exp1
                                                                                                                                                          <- return
                                                                                                                                                             (Var "&value");
                                                                                                                                                         exp2
                                                                                                                                                          <- (do
                                                                                                                                                              exp
                                                                                                                                                               <- return
                                                                                                                                                                  (Var "$_");
                                                                                                                                                              return (Just exp));
                                                                                                                                                         exps
                                                                                                                                                          <- sequence
                                                                                                                                                             [];
                                                                                                                                                         return (App exp1 exp2 exps))];
                                                                                                                                                   return (App exp1 exp2 exps))];
                                                                                                                                             return (App exp1 exp2 exps));
                                                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 205 25 205 57)) exp));
                                                                                                                                   return (Stmts exp1 exp2))];
                                                                                                                             return (Syn "block" exps));
                                                                                                                        return (MkCode {isMulti = False,
                                                                                                                                        subName = "<anon>",
                                                                                                                                        subType = SubBlock,
                                                                                                                                        subEnv = Nothing,
                                                                                                                                        subAssoc = "pre",
                                                                                                                                        subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$_", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                                                                                                        subBindings = [],
                                                                                                                                        subSlurpLimit = [],
                                                                                                                                        subReturns = (mkType "Any"),
                                                                                                                                        subLValue = False,
                                                                                                                                        subBody = body,
                                                                                                                                        subCont = Nothing}));
                                                                                                                   return $ VCode code);
                                                                                                              return (Val val))];
                                                                                                        return (Syn "sub" exps));
                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 205 59 205 59)) exp)),
                                                                                                  (do
                                                                                                   exp
                                                                                                    <- return
                                                                                                       (Var "%intable");
                                                                                                   return (Pos ((MkPos "src/perl6/Prelude.pm" 205 59 205 67)) exp))];
                                                                                             return (App exp1 exp2 exps));
                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 205 20 205 67)) exp))];
                                                                                  return (App exp1 exp2 exps));
                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 204 22 205 67)) exp))];
                                                                       return (Syn "=" exps));
                                                                  exp2
                                                                   <- (do
                                                                       exp
                                                                        <- (do
                                                                            exp1
                                                                             <- return
                                                                                (Var "&prefix:[~]");
                                                                            exp2
                                                                             <- return Nothing;
                                                                            exps
                                                                             <- sequence
                                                                                [(do
                                                                                  exp
                                                                                   <- (do
                                                                                       exp1
                                                                                        <- return
                                                                                           (Var "&map");
                                                                                       exp2
                                                                                        <- return Nothing;
                                                                                       exps
                                                                                        <- sequence
                                                                                           [(do
                                                                                             exp
                                                                                              <- (do
                                                                                                  exps
                                                                                                   <- sequence
                                                                                                      [(do
                                                                                                        val
                                                                                                         <- (do
                                                                                                             code
                                                                                                              <- (do
                                                                                                                  body
                                                                                                                   <- (do
                                                                                                                       exps
                                                                                                                        <- sequence
                                                                                                                           [(do
                                                                                                                             exp
                                                                                                                              <- (do
                                                                                                                                  exp1
                                                                                                                                   <- return
                                                                                                                                      (Var "&infix://");
                                                                                                                                  exp2
                                                                                                                                   <- return Nothing;
                                                                                                                                  exps
                                                                                                                                   <- sequence
                                                                                                                                      [(do
                                                                                                                                        exps
                                                                                                                                         <- sequence
                                                                                                                                            [return
                                                                                                                                             (Var "%transtable"),
                                                                                                                                             (do
                                                                                                                                              exp
                                                                                                                                               <- return
                                                                                                                                                  (Var "$_");
                                                                                                                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 207 27 207 29)) exp))];
                                                                                                                                        return (Syn "{}" exps)),
                                                                                                                                       return
                                                                                                                                       (Var "$_")];
                                                                                                                                  return (App exp1 exp2 exps));
                                                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 207 15 207 37)) exp))];
                                                                                                                       return (Syn "block" exps));
                                                                                                                  return (MkCode {isMulti = False,
                                                                                                                                  subName = "<anon>",
                                                                                                                                  subType = SubBlock,
                                                                                                                                  subEnv = Nothing,
                                                                                                                                  subAssoc = "pre",
                                                                                                                                  subParams = [MkParam {isInvocant = False, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$_", paramContext = CxtItem (mkType "Scalar"), paramDefault = Noop}],
                                                                                                                                  subBindings = [],
                                                                                                                                  subSlurpLimit = [],
                                                                                                                                  subReturns = (mkType "Any"),
                                                                                                                                  subLValue = False,
                                                                                                                                  subBody = body,
                                                                                                                                  subCont = Nothing}));
                                                                                                             return $ VCode code);
                                                                                                        return (Val val))];
                                                                                                  return (Syn "sub" exps));
                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 207 39 207 39)) exp)),
                                                                                            (do
                                                                                             exp
                                                                                              <- (do
                                                                                                  exp1
                                                                                                   <- return
                                                                                                      (Var "&split");
                                                                                                  exp2
                                                                                                   <- (do
                                                                                                       exp
                                                                                                        <- return
                                                                                                           (Var "$self");
                                                                                                       return (Just exp));
                                                                                                  exps
                                                                                                   <- sequence
                                                                                                      [(do
                                                                                                        exp
                                                                                                         <- (do
                                                                                                             val
                                                                                                              <- return
                                                                                                                 (VStr "");
                                                                                                             return (Val val));
                                                                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 207 51 207 53)) exp))];
                                                                                                  return (App exp1 exp2 exps));
                                                                                             return (Pos ((MkPos "src/perl6/Prelude.pm" 207 39 207 54)) exp))];
                                                                                       return (App exp1 exp2 exps));
                                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 207 9 207 54)) exp))];
                                                                            return (App exp1 exp2 exps));
                                                                       return (Pos ((MkPos "src/perl6/Prelude.pm" 207 5 207 54)) exp));
                                                                  return (Stmts exp1 exp2));
                                                             return (Pad SMy pad exp));
                                                        return (Stmts exp1 exp2));
                                                   return (Pad SMy pad exp))];
                                             return (Syn "block" exps));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Str::trans",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "$self", paramContext = CxtItem (mkType "Str"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "%intable", paramContext = CxtSlurpy (mkType "Hash"), paramDefault = Noop},MkParam {isInvocant = False, isOptional = False, isNamed = True, isLValue = True, isWritable = False, isLazy = False, paramName = "%_", paramContext = CxtSlurpy (mkType "Hash"), paramDefault = Val VUndef}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Any"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Str::trans", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "day");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::day",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::day", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "hour");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::hour",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::hour", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "is_dst");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::is_dst",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Bool"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::is_dst", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "min");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::min",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::min", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "month");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::month",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::month", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "picosec");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::picosec",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::picosec", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "sec");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::sec",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::sec", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "tz");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::tz",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::tz", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "tzname");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::tzname",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Str"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::tzname", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "wday");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::wday",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::wday", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "yday");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::yday",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::yday", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- (do
                              sv
                               <- (do
                                   code
                                    <- (do
                                        body
                                         <- (do
                                             exp
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$?SELF"),
                                                       (do
                                                        val
                                                         <- return
                                                            (VStr "year");
                                                        return (Val val))];
                                                  return (Syn "{}" exps));
                                             return (Cxt (CxtItem (mkType "Any")) exp));
                                        return (MkCode {isMulti = False,
                                                        subName = "&Time::Local::year",
                                                        subType = SubPrim,
                                                        subEnv = Nothing,
                                                        subAssoc = "pre",
                                                        subParams = [MkParam {isInvocant = True, isOptional = False, isNamed = False, isLValue = True, isWritable = True, isLazy = False, paramName = "$?SELF", paramContext = CxtItem (mkType "Time::Local"), paramDefault = Noop}],
                                                        subBindings = [],
                                                        subSlurpLimit = [],
                                                        subReturns = (mkType "Int"),
                                                        subLValue = False,
                                                        subBody = body,
                                                        subCont = Nothing}));
                                   return $ VCode code);
                              return (MkRef $ IScalar sv));
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("&Time::Local::year", tvars)),
             (do
              tvars
               <- sequence
                  [(do
                    fresh
                     <- liftSTM (newTVar True);
                    tvar
                     <- (do
                         vref
                          <- newObject (mkType "Array");
                         liftSTM (newTVar vref));
                    return (fresh, tvar))];
              return ("@*END", tvars))]

astPCP :: IO Exp
astPCP = (do
        exp1
         <- return
            (Noop);
        exp2
         <- (do
             exps
              <- sequence
                 [(do
                   val
                    <- return
                       (VStr "Prelude");
                   return (Val val)),
                  (do
                   exp1
                    <- (do
                        exps
                         <- sequence
                            [(do
                              val
                               <- return
                                  (VStr "File");
                              return (Val val)),
                             (do
                              pad
                               <- fmap mkPad . sequence $ 
                                      [(do
                                        tvars
                                         <- sequence
                                            [(do
                                              fresh
                                               <- liftSTM (newTVar True);
                                              tvar
                                               <- (do
                                                   vref
                                                    <- newObject (mkType "Scalar");
                                                   liftSTM (newTVar vref));
                                              return (fresh, tvar))];
                                        return ("$SEEK_START", tvars))];
                              exp
                               <- (do
                                   exp1
                                    <- (do
                                        exps
                                         <- sequence
                                            [return
                                             (Var "$SEEK_START"),
                                             (do
                                              exp
                                               <- (do
                                                   val
                                                    <- return
                                                       (VInt 0);
                                                   return (Val val));
                                              return (Pos ((MkPos "src/perl6/Prelude.pm" 25 22 25 23)) exp))];
                                        return (Syn "=" exps));
                                   exp2
                                    <- (do
                                        pad
                                         <- fmap mkPad . sequence $ 
                                                [(do
                                                  tvars
                                                   <- sequence
                                                      [(do
                                                        fresh
                                                         <- liftSTM (newTVar True);
                                                        tvar
                                                         <- (do
                                                             vref
                                                              <- newObject (mkType "Scalar");
                                                             liftSTM (newTVar vref));
                                                        return (fresh, tvar))];
                                                  return ("$SEEK_CUR", tvars))];
                                        exp
                                         <- (do
                                             exp1
                                              <- (do
                                                  exps
                                                   <- sequence
                                                      [return
                                                       (Var "$SEEK_CUR"),
                                                       (do
                                                        exp
                                                         <- (do
                                                             val
                                                              <- return
                                                                 (VInt 1);
                                                             return (Val val));
                                                        return (Pos ((MkPos "src/perl6/Prelude.pm" 26 22 26 23)) exp))];
                                                  return (Syn "=" exps));
                                             exp2
                                              <- (do
                                                  pad
                                                   <- fmap mkPad . sequence $ 
                                                          [(do
                                                            tvars
                                                             <- sequence
                                                                [(do
                                                                  fresh
                                                                   <- liftSTM (newTVar True);
                                                                  tvar
                                                                   <- (do
                                                                       vref
                                                                        <- newObject (mkType "Scalar");
                                                                       liftSTM (newTVar vref));
                                                                  return (fresh, tvar))];
                                                            return ("$SEEK_END", tvars))];
                                                  exp
                                                   <- (do
                                                       exp1
                                                        <- (do
                                                            exps
                                                             <- sequence
                                                                [return
                                                                 (Var "$SEEK_END"),
                                                                 (do
                                                                  exp
                                                                   <- (do
                                                                       val
                                                                        <- return
                                                                           (VInt 2);
                                                                       return (Val val));
                                                                  return (Pos ((MkPos "src/perl6/Prelude.pm" 27 22 27 23)) exp))];
                                                            return (Syn "=" exps));
                                                       exp2
                                                        <- return
                                                           (Noop);
                                                       return (Stmts exp1 exp2));
                                                  return (Pad SMy pad exp));
                                             return (Stmts exp1 exp2));
                                        return (Pad SMy pad exp));
                                   return (Stmts exp1 exp2));
                              return (Pad SMy pad exp))];
                        return (Syn "namespace" exps));
                   exp2
                    <- (do
                        exp1
                         <- (do
                             exps
                              <- sequence
                                 [(do
                                   val
                                    <- return
                                       (VStr "Pipe");
                                   return (Val val)),
                                  (do
                                   exp1
                                    <- return
                                       (Noop);
                                   exp2
                                    <- return
                                       (Noop);
                                   return (Stmts exp1 exp2))];
                             return (Syn "namespace" exps));
                        exp2
                         <- (do
                             exp1
                              <- (do
                                  exps
                                   <- sequence
                                      [(do
                                        val
                                         <- return
                                            (VStr "Control::Basic");
                                        return (Val val)),
                                       (do
                                        exp1
                                         <- return
                                            (Noop);
                                        exp2
                                         <- return
                                            (Noop);
                                        return (Stmts exp1 exp2))];
                                  return (Syn "namespace" exps));
                             exp2
                              <- (do
                                  exp1
                                   <- (do
                                       exps
                                        <- sequence
                                           [(do
                                             val
                                              <- return
                                                 (VStr "Control::Caller");
                                             return (Val val)),
                                            (do
                                             exp1
                                              <- return
                                                 (Noop);
                                             exp2
                                              <- return
                                                 (Noop);
                                             return (Stmts exp1 exp2))];
                                       return (Syn "namespace" exps));
                                  exp2
                                   <- (do
                                       exp1
                                        <- (do
                                            exps
                                             <- sequence
                                                [(do
                                                  val
                                                   <- return
                                                      (VStr "Carp");
                                                  return (Val val)),
                                                 (do
                                                  exp1
                                                   <- return
                                                      (Noop);
                                                  exp2
                                                   <- return
                                                      (Noop);
                                                  return (Stmts exp1 exp2))];
                                            return (Syn "namespace" exps));
                                       exp2
                                        <- (do
                                            exp1
                                             <- (do
                                                 exps
                                                  <- sequence
                                                     [(do
                                                       val
                                                        <- return
                                                           (VStr "IO");
                                                       return (Val val)),
                                                      (do
                                                       exp1
                                                        <- return
                                                           (Noop);
                                                       exp2
                                                        <- return
                                                           (Noop);
                                                       return (Stmts exp1 exp2))];
                                                 return (Syn "namespace" exps));
                                            exp2
                                             <- (do
                                                 exp1
                                                  <- (do
                                                      exps
                                                       <- sequence
                                                          [(do
                                                            val
                                                             <- return
                                                                (VStr "Str");
                                                            return (Val val)),
                                                           (do
                                                            exp1
                                                             <- return
                                                                (Noop);
                                                            exp2
                                                             <- return
                                                                (Noop);
                                                            return (Stmts exp1 exp2))];
                                                      return (Syn "namespace" exps));
                                                 exp2
                                                  <- (do
                                                      exp1
                                                       <- (do
                                                           exps
                                                            <- sequence
                                                               [(do
                                                                 val
                                                                  <- return
                                                                     (VStr "Time::Local");
                                                                 return (Val val)),
                                                                (do
                                                                 exp1
                                                                  <- return
                                                                     (Noop);
                                                                 exp2
                                                                  <- return
                                                                     (Noop);
                                                                 return (Stmts exp1 exp2))];
                                                           return (Syn "namespace" exps));
                                                      exp2
                                                       <- (do
                                                           exps
                                                            <- sequence
                                                               [(do
                                                                 val
                                                                  <- return
                                                                     (VStr "Num");
                                                                 return (Val val)),
                                                                (do
                                                                 exp1
                                                                  <- return
                                                                     (Noop);
                                                                 exp2
                                                                  <- (do
                                                                      pad
                                                                       <- fmap mkPad . sequence $ 
                                                                              [];
                                                                      exp
                                                                       <- (do
                                                                           exp1
                                                                            <- return
                                                                               (Noop);
                                                                           exp2
                                                                            <- (do
                                                                                pad
                                                                                 <- fmap mkPad . sequence $ 
                                                                                        [];
                                                                                exp
                                                                                 <- (do
                                                                                     exp1
                                                                                      <- return
                                                                                         (Noop);
                                                                                     exp2
                                                                                      <- return
                                                                                         (Noop);
                                                                                     return (Stmts exp1 exp2));
                                                                                return (Pad SOur pad exp));
                                                                           return (Stmts exp1 exp2));
                                                                      return (Pad SOur pad exp));
                                                                 return (Stmts exp1 exp2))];
                                                           return (Syn "namespace" exps));
                                                      return (Stmts exp1 exp2));
                                                 return (Stmts exp1 exp2));
                                            return (Stmts exp1 exp2));
                                       return (Stmts exp1 exp2));
                                  return (Stmts exp1 exp2));
                             return (Stmts exp1 exp2));
                        return (Stmts exp1 exp2));
                   return (Stmts exp1 exp2))];
             return (Syn "namespace" exps));
        return (Stmts exp1 exp2))

