code: def _depend_on_lambda_permissions_using_tag(self, bucket, permission):
          
          properties = bucket.get('Properties', None)
          if properties is None:
              properties = {}
              bucket['Properties'] = properties
          tags = properties.get('Tags', None)
          if tags is None:
              tags = []
              properties['Tags'] = tags
          dep_tag = {
              'sam:ConditionalDependsOn:' + permission.logical_id: {
                  'Fn::If': [
                      permission.resource_attributes[CONDITION],
                      ref(permission.logical_id),
                      'no dependency'
                  ]
              }
          }
          properties['Tags'] = tags + get_tag_list(dep_tag)
          return bucket
docs: Since conditional DependsOn is not supported this undocumented way of
          implicitely  making dependency through tags is used.
  
          See https://stackoverflow.com/questions/34607476/cloudformation-apply-condition-on-dependson
  
          It is done by using Ref wrapped in a conditional Fn::If. Using Ref implies a
          dependency, so CloudFormation will automatically wait once it reaches that function, the same
          as if you were using a DependsOn.