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