reflect protocol