class_docstr: Class for composing individual encoding stages.
  
  This class provides functionality for arbitrarily composing individual
  encoding stages (implementations of `EncodingStageInterface` or
  `AdaptiveEncodingStageInterface`) into a tree, where an output `Tensor` of an
  encoding stage can be further encoded by another encoding stage.
  
  The interface is similar to that of `AdaptiveEncodingStageInterface`, with the
  additional methods `decode_before_sum` and `decode_after_sum`. These methods
  split the decoding functionality to two parts, based on commutativity with
  summation.
  
  Similar to the `AdaptiveEncodingStageInterface`, the methods are designed to
  be functional transformations. That means, for instance, that the
  `initial_state` and `update_state` methods do not modify any underlying state.
  Rather, the user of the `Encoder` class is responsible for storing any values
  if necessary, and providing them back to appropriate methods of this class.
docstr: Implementation for the `commuting_structure` property.
docstr_tok: ["Implementation","for","the","`","commuting_structure","`","property","."]
code: def _commuting_structure_impl(self, previous):
      """Implementation for the `commuting_structure` property."""
      current = previous & self.stage.commutes_with_sum
      commuting_structure = {
          EncoderKeys.COMMUTE: current,
          EncoderKeys.CHILDREN: {},
      }
      for key, encoder in six.iteritems(self.children):
          commuting_structure[EncoderKeys.CHILDREN][
              key
          ] = encoder._commuting_structure_impl(
              current
          )  # pylint: disable=protected-access
      return commuting_structure
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import six
  import tensorflow
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.core import encoding_stage
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.utils import py_utils
label_desc: Use image node_id 4 for calling the Encoder obj's underlying member method code with example usage: obj._commuting_structure_impl(previous) and returns: commuting_structure