override public string Typology(ProductTypology type)
        {
            if (type == ProductTypology.Processing)
            {

                if (UnderlyingProduct != null) return UnderlyingProduct.Typology(type);

                if (SecurityType.ToLowerInvariant().Equals("fras")) return "FRA";
                if (SecurityType.ToLowerInvariant().Equals("interest rate swaps"))
                {
                    return "Swap";
                }
                if (SecurityType.ToLowerInvariant().Equals("currency swaps"))
                {
                    return "MTMCurrencySwap";
                }
                return SecurityType;
            }


            if (SecurityType.ToLowerInvariant().Equals("fras")) return "FRA";
            if (SecurityType.ToLowerInvariant().Equals("interest rate swaps"))
            {
                return "Swap";
            }
            if (SecurityType.ToLowerInvariant().Equals("swaptions"))
            {
                return "Swaption";
            }
            if (SecurityType.ToLowerInvariant().Equals("currency swaps"))
            {
                return "MTMCurrencySwap";
            }
            if (UnderlyingProduct != null)
            {
                var ss = UnderlyingProduct.Typology(type);
                return ss;
            }
            
            return SecurityType;

        }
 public override string Typology(ProductTypology type)
 {
     const string defType = "Murex";
     switch (type)
     {
         case ProductTypology.Accounting:
             return ProductAccountingType ?? defType;
         case ProductTypology.Pricing:
             return ProductPricingType ?? defType;
         case ProductTypology.Processing:
             return ProductProcessingType ?? defType;
     }
     return GetType().Name;
 }