code: def save(self, location, profile_name):
      features_dict = self.to_dict()
      if location is None:
          return json.dumps(features_dict)
      if isinstance(location, str):
          if _is_url(location):
              raise ValueError("Writing to URLs is not supported")
          if _is_s3(location):
              transport_params = get_transport_params(profile_name)
              use_smartopen_features(
                  location,
                  features_dict,
                  transport_params,
                  read=False,
              )
          else:
              with open(location, "w") as f:
                  json.dump(features_dict, f)
      else:
          json.dump(features_dict, location)
  
file_path: featuretools/featuretools/feature_base/features_serializer.py
imports: import json
  from featuretools.primitives.utils import serialize_primitive
  from featuretools.utils.s3_utils import get_transport_params, use_smartopen_features
  from featuretools.utils.wrangle import _is_s3, _is_url
  from featuretools.version import FEATURES_SCHEMA_VERSION
  from featuretools.version import __version__
label_desc: Use image node_id 3 for calling the FeaturesSerializer obj's underlying member method code with example usage: obj.save(location, profile_name) and returns: json