Generated code from  b8bf5a9ceca95ae50ec37bc6a77ee96f65dc2c43