Generated code from  cbec42aae46bc421a77f1c8383dc5cd4b3df9df3