code: def test_multi_output_features(es):
      product_id = IdentityFeature(es["log"].ww["product_id"])
      threecommon = NMostCommon()
      num_unique = NumUnique()
      tc = Feature(
          product_id,
          parent_dataframe_name="sessions",
          primitive=threecommon,
      )
  
      features = [tc, product_id]
      for i in range(3):
          features.append(
              Feature(
                  tc[i],
                  parent_dataframe_name="customers",
                  primitive=num_unique,
              ),
          )
          features.append(tc[i])
  
      serializer = FeaturesSerializer(features)
  
      flist = [feat.unique_name() for feat in features]
      fd = [feat.to_dictionary() for feat in features]
      fdict = dict(zip(flist, fd))
  
      expected = {
          "ft_version": __version__,
          "schema_version": FEATURES_SCHEMA_VERSION,
          "entityset": es.to_dictionary(),
          "feature_list": flist,
          "feature_definitions": fdict,
      }
      expected["primitive_definitions"] = {
          "0": serialize_primitive(tc.primitive),
          "1": serialize_primitive(features[2].primitive),
      }
  
      expected["feature_definitions"][flist[0]]["arguments"][
          "primitive"
      ] = "0"
      expected["feature_definitions"][flist[2]]["arguments"][
          "primitive"
      ] = "1"
      expected["feature_definitions"][flist[4]]["arguments"][
          "primitive"
      ] = "1"
      expected["feature_definitions"][flist[6]]["arguments"][
          "primitive"
      ] = "1"
  
      actual = serializer.to_dict()
      _compare_feature_dicts(expected, actual)
  
file_path: featuretools/featuretools/tests/primitive_tests/test_features_serializer.py
imports: import pandas
  from featuretools import AggregationFeature, Feature, IdentityFeature, TransformFeature, __version__
  from featuretools.entityset.deserialize import description_to_entityset
  from featuretools.feature_base.features_serializer import FeaturesSerializer
  from featuretools.primitives import Count, Max, MultiplyNumericScalar, NMostCommon, NumUnique
  from featuretools.primitives.utils import serialize_primitive
  from featuretools.version import FEATURES_SCHEMA_VERSION
label_desc: Use image node_id 3 for calling a global function with example usage: test_multi_output_features(es) without return types