[protected] [protected] [friend] [pure virtual] [virtual] [virtual] [virtual] [virtual] [inline] [virtual] [virtual] [pure virtual] [inline] [pure virtual] [protected] [friend] [protected] [virtual] [virtual] [virtual] [virtual] [virtual] [protected] [pure virtual] [inline, static] [virtual] [virtual] [inline] [virtual]