code: public WriteableScope dup(Symbol newOwner) {
              ScopeImpl result = new ScopeImpl(this, newOwner, this.table, this.nelems);
              shared++;
              // System.out.println("====> duping scope " + this.hashCode() + " owned by " + newOwner + " to " + result.hashCode());
              // new Error().printStackTrace(System.out);
              return result;
          }
docs: Construct a fresh scope within this scope, with new owner,
  which shares its table with the outer scope. Used in connection with
  method leave if scope access is stack-like in order to avoid allocation
  of fresh tables.