Generated code from  5a195663e89591e6e07d98a936f586c0637c8662