docs: def _normalize_properties(self, definition):
          """
          Inspects the definition and returns a copy of it that is updated
          with any special property such as Condition, UpdatePolicy and the
          like.
          """
          args = definition.get('Properties', {}).copy()
          if 'Condition' in definition:
              args.update({'Condition': definition['Condition']})
          if 'UpdatePolicy' in definition:
              # there's only 1 kind of UpdatePolicy; use it
              args.update({'UpdatePolicy': self._create_instance(
                  UpdatePolicy, definition['UpdatePolicy'])})
          if 'CreationPolicy' in definition:
              # there's only 1 kind of CreationPolicy; use it
              args.update({'CreationPolicy': self._create_instance(
                  CreationPolicy, definition['CreationPolicy'])})
          if 'DeletionPolicy' in definition:
              # DeletionPolicity is very basic
              args.update(
                  {'DeletionPolicy': self._convert_definition(
                      definition['DeletionPolicy'])})
          if 'Metadata' in definition:
              # there are various kind of metadata; pass it as-is
              args.update(
                  {'Metadata': self._convert_definition(
                      definition['Metadata'])})
          if 'DependsOn' in definition:
              args.update(
                  {'DependsOn': self._convert_definition(
                      definition['DependsOn'])})
          return args