private static string GetDependencyString(params object[] payoutParams)
    {
        // This should be moved to some sort of interface layer for localization.

        List <int> expenseClaimIdentities = new List <int>();
        List <int> invoiceIdentities      = new List <int>();
        List <int> salaryNetIdentities    = new List <int>();
        List <int> salaryTaxIdentities    = new List <int>();

        Payouts allPayouts = new Payouts();

        foreach (object parameter in payoutParams)
        {
            if (parameter is Payout)
            {
                allPayouts.Add((Payout)parameter);
            }

            if (parameter is Payouts)
            {
                foreach (Payout payout in (Payouts)parameter)
                {
                    allPayouts.Add(payout);
                }
            }
        }

        foreach (Payout payout in allPayouts)
        {
            expenseClaimIdentities.AddRange(payout.DependentExpenseClaims.Identities);
            invoiceIdentities.AddRange(payout.DependentInvoices.Identities);
            salaryNetIdentities.AddRange(payout.DependentSalariesNet.Identities);
            salaryTaxIdentities.AddRange(payout.DependentSalariesTax.Identities);
        }

        List <string> parts = new List <string>();

        if (expenseClaimIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Expense Claim", "Expense Claims", expenseClaimIdentities));
        }

        if (invoiceIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Invoice", "Invoices", invoiceIdentities));
        }

        if (salaryNetIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Salary Net", "Salaries Net", salaryNetIdentities));
        }

        if (salaryTaxIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Salary Tax", "Salaries Tax", salaryTaxIdentities));
        }


        if (parts.Count == 0)
        {
            return("Nothing");
        }

        string result = string.Empty;

        for (int index = 0; index < parts.Count - 1; index++)
        {
            result += ", " + parts[index];
        }

        if (parts.Count > 2)
        {
            result += ",";
        }

        if (parts.Count > 1)
        {
            result = result.Substring(2) + " and ";
        }

        result += parts[parts.Count - 1];

        return(result);
    }
    private static string GetDependencyString(params object[] payoutParams)
    {
        // This should be moved to some sort of interface layer for localization.

        List<int> expenseClaimIdentities = new List<int>();
        List<int> invoiceIdentities = new List<int>();
        List<int> salaryNetIdentities = new List<int>();
        List<int> salaryTaxIdentities = new List<int>();

        Payouts allPayouts = new Payouts();

        foreach (object parameter in payoutParams)
        {
            if (parameter is Payout)
            {
                allPayouts.Add((Payout) parameter);
            }

            if (parameter is Payouts)
            {
                foreach (Payout payout in (Payouts)parameter)
                {
                    allPayouts.Add(payout);
                }
            }
        }

        foreach (Payout payout in allPayouts)
        {
            expenseClaimIdentities.AddRange(payout.DependentExpenseClaims.Identities);
            invoiceIdentities.AddRange(payout.DependentInvoices.Identities);
            salaryNetIdentities.AddRange(payout.DependentSalariesNet.Identities);
            salaryTaxIdentities.AddRange(payout.DependentSalariesTax.Identities);
        }

        List<string> parts = new List<string>();

        if (expenseClaimIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Expense Claim", "Expense Claims", expenseClaimIdentities));
        }

        if (invoiceIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Invoice", "Invoices", invoiceIdentities));
        }

        if (salaryNetIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Salary Net", "Salaries Net", salaryNetIdentities));
        }

        if (salaryTaxIdentities.Count > 0)
        {
            parts.Add(GenerateDependencyPart("Salary Tax", "Salaries Tax", salaryTaxIdentities));
        }


        if (parts.Count == 0)
        {
            return "Nothing";
        }

        string result = string.Empty;

        for (int index = 0; index < parts.Count - 1; index++)
        {
            result += ", " + parts[index];
        }

        if (parts.Count > 2)
        {
            result += ",";
        }

        if (parts.Count > 1)
        {
            result = result.Substring(2) + " and ";
        }

        result += parts[parts.Count - 1];

        return result;
    }