Inspects the definition and returns a copy of it that is updated
        with any special property such as Condition, UpdatePolicy and the
        like.

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