code: def test_experiment_from_data_provider_differs(self):
      self._hyperparameters = provider.ListHyperparametersResult(
          hyperparameters=[
              provider.Hyperparameter(
                  hyperparameter_name="hparam1_name",
                  hyperparameter_display_name="hparam1_display_name",
                  differs=True,
              ),
              provider.Hyperparameter(
                  hyperparameter_name="hparam2_name",
                  hyperparameter_display_name="hparam2_display_name",
                  differs=False,
              ),
          ],
          session_groups=[],
      )
      self._mock_tb_context.data_provider.list_tensors.side_effect = (
          None
      )
      actual_exp = self._experiment_from_metadata()
      expected_exp = """
              hparam_infos: {
                name: 'hparam1_name'
                display_name: 'hparam1_display_name'
                differs: true
              }
              hparam_infos: {
                name: 'hparam2_name'
                display_name: 'hparam2_display_name'
                differs: false
              }
          """
      self.assertProtoEquals(expected_exp, actual_exp)
  
imports: import operator
  from unittest import mock
  import tensorflow
  from google.protobuf import text_format
  from tensorboard import context
  from tensorboard.data import provider
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.hparams import api_pb2
  from tensorboard.plugins.hparams import backend_context
  from tensorboard.plugins.hparams import metadata
  from tensorboard.plugins.hparams import plugin_data_pb2
label_desc: Use image node_id 15 for calling the BackendContextTest obj's underlying member method code with example usage: obj.test_experiment_from_data_provider_differs() without return types