Why to add `ProtectedNode` as friend class?