public static bool TryCreate(string invoiceReferenceNumber, out InvoiceReferenceNumber result, out string failureReason)
        {
            var specification = new InvoiceReferenceNumberSpecification();
            if (specification.IsSatisfiedBy(invoiceReferenceNumber))
            {
                result = new InvoiceReferenceNumber(invoiceReferenceNumber);
                failureReason = string.Empty;
                return true;
            }

            result = null;
            failureReason = specification.GetReasonsForDissatisfactionSeparatedWithNewLine();
            return false;
        }
 protected bool Equals(InvoiceReferenceNumber other)
 {
     return invoiceReferenceNumber.Equals(other.invoiceReferenceNumber);
 }
 public static bool TryCreate(int invoiceReferenceNumber, out InvoiceReferenceNumber result, out string failureReason)
 {
     return TryCreate(invoiceReferenceNumber.ToString(), out result, out failureReason);
 }