<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _update_usage_for_alb(self, conn, alb_arn, alb_name):
 """ Update usage for a single ALB. :param conn: elbv2 API connection :type conn: :py:class:`ElasticLoadBalancing.Client` :param alb_arn: Load Balancer ARN :type alb_arn: str :param alb_name: Load Balancer Name :type alb_name: str """

        logger.debug('Updating usage for ALB %s', alb_arn)
        listeners = paginate_dict(
            conn.describe_listeners,
            LoadBalancerArn=alb_arn,
            alc_marker_path=['NextMarker'],
            alc_data_path=['Listeners'],
            alc_marker_param='Marker'
        )['Listeners']
        num_rules = 0
        num_certs = 0
        for l in listeners:
            certs = [
                x for x in l.get('Certificates', [])
                if x.get('IsDefault', False) is False
            ]
            num_certs += len(certs)
            rules = paginate_dict(
                conn.describe_rules,
                ListenerArn=l['ListenerArn'],
                alc_marker_path=['NextMarker'],
                alc_data_path=['Rules'],
                alc_marker_param='Marker'
            )['Rules']
            num_rules += len(rules)
        self.limits[
            'Listeners per application load balancer']._add_current_usage(
            len(listeners),
            aws_type='AWS::ElasticLoadBalancingV2::LoadBalancer',
            resource_id=alb_name,
        )
        self.limits['Rules per application load balancer']._add_current_usage(
            num_rules,
            aws_type='AWS::ElasticLoadBalancingV2::LoadBalancer',
            resource_id=alb_name,
        )
        self.limits[
            'Certificates per application load balancer'
        ]._add_current_usage(
            num_certs,
            aws_type='AWS::ElasticLoadBalancingV2::LoadBalancer',
            resource_id=alb_name
        )