Separate front-end and back-end of handle implementation.
As part of #29218 (moved), we should separate the interface and implementation parts of our handle code, so we can support multiple implementations.
As part of #29218 (moved), we should separate the interface and implementation parts of our handle code, so we can support multiple implementations.