message: [tf.data] Remove the (shared) lock around `Model::Node::output()`.
  The corresponding data member is effectively `const`, since it is set
  at construction time and never mutated.
  This improves the performance of the `Dataset.range()` benchmark with
  and without modeling enabled:
  * Average time per element (with modeling): 373.211813 nanoseconds
  (was 441.004515 nanoseconds)
diff: @@ -143,10 +143,7 @@ class Node {
  }
  // Returns the node output.
  - Node* output() const LOCKS_EXCLUDED(mu_) {
  - tf_shared_lock l(mu_);
  - return output_;
  - }
  + Node* output() const { return output_; }
  // Returns the aggregate processing time.
  int64 processing_time() const LOCKS_EXCLUDED(mu_) {
  @@ -285,7 +282,7 @@ class Node {
  // The reference to the output node is not owned so that that deletion of a
  // node results in recursive deletion of the subtree rooted in the node.
  - Node* output_ GUARDED_BY(mu_);
  + Node* const output_;
  };
  // InterleaveMany is used to model datasets whose inputs are used to create
  