Merge 2ce0685f76a4db403b7b2650433a584c150f2108 into 75e834700d19aa373b428c7c746f951737354c28
Closes #1544 With refinements and changes
PiperOrigin-RevId: 215273083