outterFunc <- function(x) {
  e.out <- environment()
  cat(sprintf("%12s :: outterFunc's environment\n", cleanEnvirString(e.out)))
  
  f1 <- function(x) {
    e.f1 <- environment()
    cat(sprintf("%12s :: f1's environment\n", cleanEnvirString(e.f1)))

    ret_from_f2 <- f2(x)
    print(ret_from_f2)
    cat(sprintf("f2 returned: %s\n", ret_from_f2))
    return(list(x, ret_from_f2))
  }

  f1(x)

}
f2 <- function(x) {
  e.f2 <- environment()
  cat(sprintf("%12s :: f2's environment\n", cleanEnvirString(e.f2)))

  cat("\n\n")
  browser()
  for (i in (-1):5)
    cat(i, "  : ", try(.e(parent.frame(i))), "\n")
  
  sys.calls()


  x.sub_1 <- substitute(x)
  x.sub <- substitute()
  x.chr <- as.character(x.sub)
  return(x.sub)
}

test_var <- "hello world"
outterFunc(test_var)
