environments works on a dots list created by {codedots w,
while dots_environments works on arguments you pass in.
dots_environments(...)
environments(x)
environments(x) <- value
"environments"(x) <- valueenvironments<- constructs a new list of unevaluated promises
with the same expressions but different environments.