Generated code from  af590ac9a0745cb03ad6a8d7a7336e83a2b04891