code: def resolve_sam_resource_refs(self, input, supported_resource_refs):
          
          return self._traverse(input, supported_resource_refs, self._try_resolve_sam_resource_refs)
docs: Customers can provide a reference to a "derived" SAM resource such as Alias of a Function or Stage of an API
          resource. This method recursively walks the tree, converting all derived references to the real resource name,
          if it is present.
  
          Example:
              {"Ref": "MyFunction.Alias"} -> {"Ref": "MyFunctionAliasLive"}
  
          This method does not attempt to validate a reference. If it is invalid or non-resolvable, it skips the
          occurrence and continues with the rest. It is recommended that you have an external process that detects and
          surfaces invalid references.
  
          For first call, it is recommended that `template` is the entire CFN template in order to handle
          references in Mapping or Output sections.
  
          :param dict input: CFN template that needs resolution. This method will modify the input
              directly resolving references. In subsequent recursions, this will be a fragment of the CFN template.
          :param SupportedResourceReferences supported_resource_refs: Object that contains information about the resource
              references supported in this SAM template, along with the value they should resolve to.
          :return list errors: List of dictionary containing information about invalid reference. Empty list otherwise