Generated code from  50c7fe16b5dbe114cafc3812e4850b38c3cb365f