iDecl ((DVar ind tType):tail) stm = do {
    loc <- alloc tType;
    case tType of
      TDict t1 t2 -> do putToStore loc (EDict M.empty t1 t2)
                        localEnv (M.insert ind loc) (iDecl tail stm)
      t         -> localEnv (M.insert ind loc) (iDecl tail stm)
  }
iDecl ((DVar ind tType):tail) stm = do {
    loc <- alloc tType;
    case tType of
      TDict t1 t2 -> do putToStore loc (EDict M.empty t1 t2)
                        localEnv (M.insert ind loc) (iDecl tail stm)
      t         -> localEnv (M.insert ind loc) (iDecl tail stm)
  }
iDecl ((DVar ind tType):tail) stm = do {
    loc <- alloc tType;
    case tType of
      TDict t1 t2 -> do putToStore loc (EDict M.empty t1 t2)
                        localEnv (M.insert ind loc) (iDecl tail stm)
      t         -> localEnv (M.insert ind loc) (iDecl tail stm)
  }