private bool Handle()

in src/Core/Compiling/Policy/RateLimitCompiler.cs [81:124]


    private bool Handle(ICompilationContext context, string name, InitializerValue value, out XElement element)
    {
        element = new XElement(name);
        var values = value.NamedValues!;
        
        var isNameAdded = element.AddAttribute(values, nameof(EntityLimitConfig.Name), "name");
        var isIdAdded = element.AddAttribute(values, nameof(EntityLimitConfig.Id), "id");

        if (!isNameAdded && !isIdAdded)
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.AtLeastOneOfTwoShouldBeDefined,
                value.Node.GetLocation(),
                name,
                nameof(EntityLimitConfig.Name),
                nameof(EntityLimitConfig.Id)
            ));
            return false;
        }

        if (!element.AddAttribute(values, nameof(EntityLimitConfig.Calls), "calls"))
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.RequiredParameterNotDefined,
                value.Node.GetLocation(),
                name,
                nameof(EntityLimitConfig.Calls)
            ));
            return false;
        }

        if (!element.AddAttribute(values, nameof(EntityLimitConfig.RenewalPeriod), "renewal-period"))
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.RequiredParameterNotDefined,
                value.Node.GetLocation(),
                name,
                nameof(EntityLimitConfig.RenewalPeriod)
            ));
            return false;
        }

        return true;
    }