public string GetString(int subType, IStringReader stringReader)
        {
            string value;

            switch (Type)
            {
            // Integer
            case 1:
                value = $"{Value}";
                break;

            // Unsigned Integer
            case 2:
                if (subType == 0x14 || subType == 0x1E || subType == 0x1F || subType == 0x21)
                {
                    var foundString = stringReader.GetByHash((uint)Value);
                    if (foundString == null)
                    {
                        value = $"{Value}";
                        break;
                    }

                    value = $"\"{foundString}\"";
                    break;
                }

                value = $"{Value}";
                break;

            // Float
            case 3:
                value = $"{BitConverter.Int32BitsToSingle((int)Value).ToString(CultureInfo.GetCultureInfo("en-gb"))}";
                break;

            // Execution Context values
            case 4:
                // 4000+ ?
                // Values 3000+ are input parameters to the method
                // 2000+ ?
                // Values 1000+ are stack values
                value = "$";
                if (Value >= 1000 && Value <= 1999)
                {
                    value += $"v{Value - 1000}";
                }
                if (Value >= 2000 && Value <= 2999)
                {
                    value += $"x{Value - 2000}";
                }
                if (Value >= 3000 && Value <= 3999)
                {
                    value += $"p{Value - 3000}";
                }
                if (Value >= 4000 && Value <= 4999)
                {
                    value += $"y{Value - 4000}";
                }
                break;

            // String
            case 24:
                value = $"\"{stringReader.Read(Value)}\"";
                break;

            // Method Name
            case 25:
                value = $"\"{stringReader.Read(Value)}\"";
                break;

            default:
                throw new InvalidOperationException($"Unknown type {Type}.");
            }

            return(value + $"<{Type}>");
        }