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