class_docstr: A container for operation outputs during _OptimizeVisitor traversal.
  
  This is used in order to maintain both a flattened view, and a fine grained
  view that can be used for caching.
  
  `prefer_fine_grained_view` is a hint that means that if True, the
  `fine_grained_view` should be used.  It should be set to true if the upstream
  view has cacheing operations that haven't been flattened yet.
code: def __post_init__(self):
      if self.prefer_fine_grained_view and not self.fine_grained_view:
          raise ValueError(
              "Cannot prefer fine_grained_view when one is not provided"
          )
  
imports: import collections
  import dataclasses
  import hashlib
  from typing import Collection, Dict, Mapping, Optional, Tuple
  from typing import OrderedDict
  import tensorflow
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import common_types
  from tensorflow_transform import graph_tools
  from tensorflow_transform import impl_helper
  from tensorflow_transform import nodes
  from tensorflow_transform import tf2_utils
  from tensorflow_transform import tf_utils
  from tensorflow_transform.beam import analyzer_cache
  from tensorflow_transform.beam import beam_nodes
  from tensorflow_transform.beam import combiner_packing_util
label_desc: Use image node_id 1 for calling the _OptimizationView obj's underlying member method code with example usage: obj.__post_init__() without return types