src/main/java/org/fix4j/engine/exception/InvalidValueException.java
public class InvalidValueException extends Fix4jException {
	
	private static final long serialVersionUID = 1L;

	private final FixTag fixTag;
	private final String value;
	
	public InvalidValueException(final FixTag fixTag, final CharSequence seq, int start, int end) {
		super(new StringBuilder(40)
				.append("Invalid value for tag ")
				.append(fixTag)
				.append(": ")
				.append(seq, start, end).toString());
		this.fixTag = Objects.requireNonNull(fixTag, "fixTag is null");
		this.value = seq.subSequence(start, end).toString();
	}
	public InvalidValueException(final FixTag fixTag, final CharSequence seq, int start, int end, Throwable cause) {
		this(fixTag, seq, start, end);
		initCause(cause);
	}
	public InvalidValueException(final FixTag fixTag, final String value) {
		this(fixTag, value, 0, value.length());
	}
	public InvalidValueException(final FixTag fixTag, final String value, Throwable cause) {
		this(fixTag, value, 0, value.length(), cause);
	}
	
	public FixTag getFixTag() {
		return fixTag;
	}
	public String getValue() {
		return value;
	}
}
src/main/java/org/fix4j/engine/tag/IntTag.java
public interface IntTag extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptInt(this, convertFrom(value, 0, value.length()));
	}
	default int convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseInt(this, value, start, end);
	}
	default void convertTo(int value, Appendable destination) throws IOException {
		ParseUtil.LONG_ARITHMETIC.toString(value, destination);
	}
	default String convertToString(int value) {
		return ParseUtil.LONG_ARITHMETIC.toString(value);
	}
}
src/main/java/org/fix4j/engine/tag/ObjectTag.java
public interface ObjectTag<T> extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptObject(this, convertFrom(value, 0, value.length()));
	}
	Class<T> valueType();
	T convertFrom(CharSequence value, int start, int end) throws InvalidValueException;
	void convertTo(T value, Appendable destination) throws IOException;
	String convertToString(T value);
}
src/main/java/org/fix4j/engine/tag/CharTag.java
public interface CharTag extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptChar(this, convertFrom(value, 0, value.length()));
	}
	default char convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseChar(this, value, start, end);
	}
	default void convertTo(char value, Appendable destination) throws IOException {
		destination.append(value);
	}
	default String convertToString(char value) {
		return String.valueOf(value);
	}
}
src/main/java/org/fix4j/engine/tag/LongTag.java
public interface LongTag extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptLong(this, convertFrom(value, 0, value.length()));
	}
	default long convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseLong(this, value, start, end);
	}
	default void convertTo(long value, Appendable destination) throws IOException {
		ParseUtil.LONG_ARITHMETIC.toString(value, destination);
	}
	default String convertToString(long value) {
		return ParseUtil.LONG_ARITHMETIC.toString(value);
	}
}
src/main/java/org/fix4j/engine/tag/GroupTag.java
public interface GroupTag extends FixTag {
	List<FixTag> getGroupTags();
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptGroup(this, convertFrom(value, 0, value.length()));
	}
	default int convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseNonNegativeInt(this, value, start, end);
	}
	default void convertTo(int value, Appendable destination) throws IOException {
		ParseUtil.LONG_ARITHMETIC.toString(value, destination);
	}
	default String convertToString(int value) {
		return ParseUtil.LONG_ARITHMETIC.toString(value);
	}
}
src/main/java/org/fix4j/engine/tag/BooleanTag.java
public interface BooleanTag extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptBoolean(this, convertFrom(value, 0, value.length()));
	}
	default boolean convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseBoolean(this, value, start, end);
	}
	default void convertTo(boolean value, Appendable destination) throws IOException {
		destination.append(value ? 'Y' : 'N');
	}
	default String convertToString(boolean value) {
		return value ? "Y" : "N";
	}
}
src/main/java/org/fix4j/engine/stream/TagValueConsumer.java
public interface TagValueConsumer {
	void acceptBoolean(BooleanTag tag, boolean value);
	void acceptChar(CharTag tag, char value);
	void acceptInt(IntTag tag, int value);
	void acceptLong(LongTag tag, long value);
	void acceptDouble(DoubleTag tag, double value);
	void acceptDecimal(DecimalTag tag, long value);
	void acceptString(StringTag tag, CharSequence value);
	void acceptGroup(GroupTag tag, int groupSize);
	<T> void acceptObject(ObjectTag<T> tag, T value);
	void acceptOther(FixTag tag, CharSequence value);
	
	default void invalidValue(FixTag tag, InvalidValueException exception) throws InvalidValueException {
		throw exception;
	}
}
src/main/java/org/fix4j/engine/tag/DecimalTag.java
public interface DecimalTag extends FixTag {
	
	/**
	 * Returns the arithmetic defining the scale (aka precision) of the decimal value.
	 * @return the arithmetic with scale, rounding and overflow mode for the parsing
	 */
	DecimalArithmetic getArithmetic();

	/**
	 * Returns the precision for tag values, for instance 2 for 2 decimal places.
	 * @return the precision after the decimal point
	 */
	default int getPrecision() {
		return getArithmetic().getScale();
	}

	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptDecimal(this, convertFrom(value, 0, value.length()));
	}
	default long convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseDecimal(this, value, start, end);
	}
	default void convertTo(long value, Appendable destination) throws IOException {
		getArithmetic().toString(value, destination);
	}
	default String convertToString(long value) {
		return getArithmetic().toString(value);
	}
}
src/main/java/org/fix4j/engine/tag/DoubleTag.java
public interface DoubleTag extends FixTag {
	
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException {
		consumer.acceptDouble(this, convertFrom(value, 0, value.length()));
	}
	default double convertFrom(CharSequence value, int start, int end) throws InvalidValueException {
		return ParseUtil.parseDouble(this, value, start, end);
	}
	default void convertTo(double value, Appendable destination) throws IOException {
		destination.append(String.valueOf(value));//FIXME make this garbage free
	}
	default String convertToString(double value) {
		return String.valueOf(value);
	}
}
src/main/java/org/fix4j/engine/tag/FixTag.java
public interface FixTag {
	default String name() {
		return "tag(" + tag() + ")";
	}
	int tag();
	
	void dispatch(CharSequence value, TagValueConsumer consumer) throws InvalidValueException;

	int Account = 1;
	int AdvId = 2;
	int AdvRefID = 3;
	int AdvSide = 4;
	int AdvTransType = 5;
	int AvgPx = 6;
	int BeginSeqNo = 7;
	int BeginString = 8;
	int BodyLength = 9;
	int CheckSum = 10;
	int ClOrdID = 11;
	int Commission = 12;
	int CommType = 13;
	int CumQty = 14;
	int Currency = 15;
	int EndSeqNo = 16;
	int ExecID = 17;
	int ExecInst = 18;
	int ExecRefID = 19;
	int ExecTransType = 20;
	int HandlInst = 21;
	int SecurityIDSource = 22;
	int IOIID = 23;
	int IOIOthSvc = 24; //no longer used
	int IOIQltyInd = 25;
	int IOIRefID = 26;
	int IOIQty = 27;
	int IOITransType = 28;
	int LastCapacity = 29;
	int LastMkt = 30;
	int LastPx = 31;
	int LastQty = 32;
	int NoLinesOfText = 33;
	int MsgSeqNum = 34;
	int MsgType = 35;
	int NewSeqNo = 36;
	int OrderID = 37;
	int OrderQty = 38;
	int OrdStatus = 39;
	int OrdType = 40;
	int OrigClOrdID = 41;
	int OrigTime = 42;
	int PossDupFlag = 43;
	int Price = 44;
	int RefSeqNum = 45;
	int RelatdSym = 46;//no longer used
	int Rule80A = 47;//no longer used
	int SecurityID = 48;
	int SenderCompID = 49;
	int SenderSubID = 50;
	int SendingDate = 51;
	int SendingTime = 52;
	int Quantity = 53;
	int Side = 54;
	int Symbol = 55;
	int TargetCompID = 56;
	int TargetSubID = 57;
	int Text = 58;
	int TimeInForce = 59;
	int TransactTime = 60;
	int Urgency = 61;
	int ValidUntilTime = 62;
	int SettlType = 63;
	int SettlDate = 64;
	int SymbolSfx = 65;
	int ListID = 66;
	int ListSeqNo = 67;
	int TotNoOrders = 68;
	int ListExecInst = 69;
	int AllocID = 70;
	int AllocTransType = 71;
	int RefAllocID = 72;
	int NoOrders = 73;
	int AvgPxPrecision = 74;
	int TradeDate = 75;
	int ExecBroker = 76;
	int PositionEffect = 77;
	int NoAllocs = 78;
	int AllocAccount = 79;
	int AllocQty = 80;
	int ProcessCode = 81;
	int NoRpts = 82;
	int RptSeq = 83;
	int CxlQty = 84;
	int NoDlvyInst = 85;
	int DlvyInst = 86;
	int AllocStatus = 87;
	int AllocRejCode = 88;
	int Signature = 89;
	int SecureDataLen = 90;
	int SecureData = 91;
	int BrokerOfCredit = 92;
	int SignatureLength = 93;
	int EmailType = 94;
	int RawDataLength = 95;
	int RawData = 96;
	int PossResend = 97;
	int EncryptMethod = 98;
	int StopPx = 99;
	int ExDestination = 100;
	int _Not_Defined_ = 101;
	int CxlRejReason = 102;
	int OrdRejReason = 103;
	int IOIQualifier = 104;
	int WaveNo = 105;
	int Issuer = 106;
	int SecurityDesc = 107;
	int HeartBtInt = 108;
	int ClientID = 109;
	int MinQty = 110;
	int MaxFloor = 111;
	int TestReqID = 112;
	int ReportToExch = 113;
	int LocateReqd = 114;
	int OnBehalfOfCompID = 115;
	int OnBehalfOfSubID = 116;
	int QuoteID = 117;
	int NetMoney = 118;
	int SettlCurrAmt = 119;
	int SettlCurrency = 120;
	int ForexReq = 121;
	int OrigSendingTime = 122;
	int GapFillFlag = 123;
	int NoExecs = 124;
	int CxlType = 125;
	int ExpireTime = 126;
	int DKReason = 127;
	int DeliverToCompID = 128;
	int DeliverToSubID = 129;
	int IOINaturalFlag = 130;
	int QuoteReqID = 131;
	int BidPx = 132;
	int OfferPx = 133;
	int BidSize = 134;
	int OfferSize = 135;
	int NoMiscFees = 136;
	int MiscFeeAmt = 137;
	int MiscFeeCurr = 138;
	int MiscFeeType = 139;
	int PrevClosePx = 140;
	int ResetSeqNumFlag = 141;
	int SenderLocationID = 142;
	int TargetLocationID = 143;
	int OnBehalfOfLocationID = 144;
	int DeliverToLocationID = 145;
	int NoRelatedSym = 146;
	int Subject = 147;
	int Headline = 148;
	int URLLink = 149;
	int ExecType = 150;
	int LeavesQty = 151;
	int CashOrderQty = 152;
	int AllocAvgPx = 153;
	int AllocNetMoney = 154;
	int SettlCurrFxRate = 155;
	int SettlCurrFxRateCalc = 156;
	int NumDaysInterest = 157;
	int AccruedInterestRate = 158;
	int AccruedInterestAmt = 159;
	int SettlInstMode = 160;
	int AllocText = 161;
	int SettlInstID = 162;
	int SettlInstTransType = 163;
	int EmailThreadID = 164;
	int SettlInstSource = 165;
	int SettlLocation = 166;
	int SecurityType = 167;
	int EffectiveTime = 168;
	int StandInstDbType = 169;
	int StandInstDbName = 170;
	int StandInstDbID = 171;
	int SettlDeliveryType = 172;
	int SettlDepositoryCode = 173;
	int SettlBrkrCode = 174;
	int SettlInstCode = 175;
	int SecuritySettlAgentName = 176;
	int SecuritySettlAgentCode = 177;
	int SecuritySettlAgentAcctNum = 178;
	int SecuritySettlAgentAcctName = 179;
	int SecuritySettlAgentContactName = 180;
	int SecuritySettlAgentContactPhone = 181;
	int CashSettlAgentName = 182;
	int CashSettlAgentCode = 183;
	int CashSettlAgentAcctNum = 184;
	int CashSettlAgentAcctName = 185;
	int CashSettlAgentContactName = 186;
	int CashSettlAgentContactPhone = 187;
	int BidSpotRate = 188;
	int BidForwardPoints = 189;
	int OfferSpotRate = 190;
	int OfferForwardPoints = 191;
	int OrderQty2 = 192;
	int SettlDate2 = 193;
	int LastSpotRate = 194;
	int LastForwardPoints = 195;
	int AllocLinkID = 196;
	int AllocLinkType = 197;
	int SecondaryOrderID = 198;
	int NoIOIQualifiers = 199;
	int MaturityMonthYear = 200;
	int PutOrCall = 201;
	int StrikePrice = 202;
	int CoveredOrUncovered = 203;
	int CustomerOrFirm = 204;
	int MaturityDay = 205;
	int OptAttribute = 206;
	int SecurityExchange = 207;
	int NotifyBrokerOfCredit = 208;
	int AllocHandlInst = 209;
	int MaxShow = 210;
	int PegOffsetValue = 211;
	int XmlDataLen = 212;
	int XmlData = 213;
	int SettlInstRefID = 214;
	int NoRoutingIDs = 215;
	int RoutingType = 216;
	int RoutingID = 217;
	int Spread = 218;
	int Benchmark = 219;
	int BenchmarkCurveCurrency = 220;
	int BenchmarkCurveName = 221;
	int BenchmarkCurvePoint = 222;
	int CouponRate = 223;
	int CouponPaymentDate = 224;
	int IssueDate = 225;
	int RepurchaseTerm = 226;
	int RepurchaseRate = 227;
	int Factor = 228;
	int TradeOriginationDate = 229;
	int ExDate = 230;
	int ContractMultiplier = 231;
	int NoStipulations = 232;
	int StipulationType = 233;
	int StipulationValue = 234;
	int YieldType = 235;
	int Yield = 236;
	int TotalTakedown = 237;
	int Concession = 238;
	int RepoCollateralSecurityType = 239;
	int RedemptionDate = 240;
	int UnderlyingCouponPaymentDate = 241;
	int UnderlyingIssueDate = 242;
	int UnderlyingRepoCollateralSecurityType = 243;
	int UnderlyingRepurchaseTerm = 244;
	int UnderlyingRepurchaseRate = 245;
	int UnderlyingFactor = 246;
	int UnderlyingRedemptionDate = 247;
	int LegCouponPaymentDate = 248;
	int LegIssueDate = 249;
	int LegRepoCollateralSecurityType = 250;
	int LegRepurchaseTerm = 251;
	int LegRepurchaseRate = 252;
	int LegFactor = 253;
	int LegRedemptionDate = 254;
	int CreditRating = 255;
	int UnderlyingCreditRating = 256;
	int LegCreditRating = 257;
	int TradedFlatSwitch = 258;
	int BasisFeatureDate = 259;
	int BasisFeaturePrice = 260;
	int ReservedAllocatedToTheFixedIncomeProposal = 261;
	int MDReqID = 262;
	int SubscriptionRequestType = 263;
	int MarketDepth = 264;
	int MDUpdateType = 265;
	int AggregatedBook = 266;
	int NoMDEntryTypes = 267;
	int NoMDEntries = 268;
	int MDEntryType = 269;
	int MDEntryPx = 270;
	int MDEntrySize = 271;
	int MDEntryDate = 272;
	int MDEntryTime = 273;
	int TickDirection = 274;
	int MDMkt = 275;
	int QuoteCondition = 276;
	int TradeCondition = 277;
	int MDEntryID = 278;
	int MDUpdateAction = 279;
	int MDEntryRefID = 280;
	int MDReqRejReason = 281;
	int MDEntryOriginator = 282;
	int LocationID = 283;
	int DeskID = 284;
	int DeleteReason = 285;
	int OpenCloseSettlFlag = 286;
	int SellerDays = 287;
	int MDEntryBuyer = 288;
	int MDEntrySeller = 289;
	int MDEntryPositionNo = 290;
	int FinancialStatus = 291;
	int CorporateAction = 292;
	int DefBidSize = 293;
	int DefOfferSize = 294;
	int NoQuoteEntries = 295;
	int NoQuoteSets = 296;
	int QuoteStatus = 297;
	int QuoteCancelType = 298;
	int QuoteEntryID = 299;
	int QuoteRejectReason = 300;
	int QuoteResponseLevel = 301;
	int QuoteSetID = 302;
	int QuoteRequestType = 303;
	int TotNoQuoteEntries = 304;
	int UnderlyingSecurityIDSource = 305;
	int UnderlyingIssuer = 306;
	int UnderlyingSecurityDesc = 307;
	int UnderlyingSecurityExchange = 308;
	int UnderlyingSecurityID = 309;
	int UnderlyingSecurityType = 310;
	int UnderlyingSymbol = 311;
	int UnderlyingSymbolSfx = 312;
	int UnderlyingMaturityMonthYear = 313;
	int UnderlyingMaturityDay = 314;
	int UnderlyingPutOrCall = 315;
	int UnderlyingStrikePrice = 316;
	int UnderlyingOptAttribute = 317;
	int UnderlyingCurrency = 318;
	int RatioQty = 319;
	int SecurityReqID = 320;
	int SecurityRequestType = 321;
	int SecurityResponseID = 322;
	int SecurityResponseType = 323;
	int SecurityStatusReqID = 324;
	int UnsolicitedIndicator = 325;
	int SecurityTradingStatus = 326;
	int HaltReason = 327;
	int InViewOfCommon = 328;
	int DueToRelated = 329;
	int BuyVolume = 330;
	int SellVolume = 331;
	int HighPx = 332;
	int LowPx = 333;
	int Adjustment = 334;
	int TradSesReqID = 335;
	int TradingSessionID = 336;
	int ContraTrader = 337;
	int TradSesMethod = 338;
	int TradSesMode = 339;
	int TradSesStatus = 340;
	int TradSesStartTime = 341;
	int TradSesOpenTime = 342;
	int TradSesPreCloseTime = 343;
	int TradSesCloseTime = 344;
	int TradSesEndTime = 345;
	int NumberOfOrders = 346;
	int MessageEncoding = 347;
	int EncodedIssuerLen = 348;
	int EncodedIssuer = 349;
	int EncodedSecurityDescLen = 350;
	int EncodedSecurityDesc = 351;
	int EncodedListExecInstLen = 352;
	int EncodedListExecInst = 353;
	int EncodedTextLen = 354;
	int EncodedText = 355;
	int EncodedSubjectLen = 356;
	int EncodedSubject = 357;
	int EncodedHeadlineLen = 358;
	int EncodedHeadline = 359;
	int EncodedAllocTextLen = 360;
	int EncodedAllocText = 361;
	int EncodedUnderlyingIssuerLen = 362;
	int EncodedUnderlyingIssuer = 363;
	int EncodedUnderlyingSecurityDescLen = 364;
	int EncodedUnderlyingSecurityDesc = 365;
	int AllocPrice = 366;
	int QuoteSetValidUntilTime = 367;
	int QuoteEntryRejectReason = 368;
	int LastMsgSeqNumProcessed = 369;
	int OnBehalfOfSendingTime = 370;
	int RefTagID = 371;
	int RefMsgType = 372;
	int SessionRejectReason = 373;
	int BidRequestTransType = 374;
	int ContraBroker = 375;
	int ComplianceID = 376;
	int SolicitedFlag = 377;
	int ExecRestatementReason = 378;
	int BusinessRejectRefID = 379;
	int BusinessRejectReason = 380;
	int GrossTradeAmt = 381;
	int NoContraBrokers = 382;
	int MaxMessageSize = 383;
	int NoMsgTypes = 384;
	int MsgDirection = 385;
	int NoTradingSessions = 386;
	int TotalVolumeTraded = 387;
	int DiscretionInst = 388;
	int DiscretionOffsetValue = 389;
	int BidID = 390;
	int ClientBidID = 391;
	int ListName = 392;
	int TotNoRelatedSym = 393;
	int BidType = 394;
	int NumTickets = 395;
	int SideValue1 = 396;
	int SideValue2 = 397;
	int NoBidDescriptors = 398;
	int BidDescriptorType = 399;
	int BidDescriptor = 400;
	int SideValueInd = 401;
	int LiquidityPctLow = 402;
	int LiquidityPctHigh = 403;
	int LiquidityValue = 404;
	int EFPTrackingError = 405;
	int FairValue = 406;
	int OutsideIndexPct = 407;
	int ValueOfFutures = 408;
	int LiquidityIndType = 409;
	int WtAverageLiquidity = 410;
	int ExchangeForPhysical = 411;
	int OutMainCntryUIndex = 412;
	int CrossPercent = 413;
	int ProgRptReqs = 414;
	int ProgPeriodInterval = 415;
	int IncTaxInd = 416;
	int NumBidders = 417;
	int BidTradeType = 418;
	int BasisPxType = 419;
	int NoBidComponents = 420;
	int Country = 421;
	int TotNoStrikes = 422;
	int PriceType = 423;
	int DayOrderQty = 424;
	int DayCumQty = 425;
	int DayAvgPx = 426;
	int GTBookingInst = 427;
	int NoStrikes = 428;
	int ListStatusType = 429;
	int NetGrossInd = 430;
	int ListOrderStatus = 431;
	int ExpireDate = 432;
	int ListExecInstType = 433;
	int CxlRejResponseTo = 434;
	int UnderlyingCouponRate = 435;
	int UnderlyingContractMultiplier = 436;
	int ContraTradeQty = 437;
	int ContraTradeTime = 438;
	int ClearingFirm = 439;
	int ClearingAccount = 440;
	int LiquidityNumSecurities = 441;
	int MultiLegReportingType = 442;
	int StrikeTime = 443;
	int ListStatusText = 444;
	int EncodedListStatusTextLen = 445;
	int EncodedListStatusText = 446;
	int PartyIDSource = 447;
	int PartyID = 448;
	int TotalVolumeTradedDate = 449;
	int TotalVolumeTradedTime = 450;
	int NetChgPrevDay = 451;
	int PartyRole = 452;
	int NoPartyIDs = 453;
	int NoSecurityAltID = 454;
	int SecurityAltID = 455;
	int SecurityAltIDSource = 456;
	int NoUnderlyingSecurityAltID = 457;
	int UnderlyingSecurityAltID = 458;
	int UnderlyingSecurityAltIDSource = 459;
	int Product = 460;
	int CFICode = 461;
	int UnderlyingProduct = 462;
	int UnderlyingCFICode = 463;
	int TestMessageIndicator = 464;
	int QuantityType = 465;
	int BookingRefID = 466;
	int IndividualAllocID = 467;
	int RoundingDirection = 468;
	int RoundingModulus = 469;
	int CountryOfIssue = 470;
	int StateOrProvinceOfIssue = 471;
	int LocaleOfIssue = 472;
	int NoRegistDtls = 473;
	int MailingDtls = 474;
	int InvestorCountryOfResidence = 475;
	int PaymentRef = 476;
	int DistribPaymentMethod = 477;
	int CashDistribCurr = 478;
	int CommCurrency = 479;
	int CancellationRights = 480;
	int MoneyLaunderingStatus = 481;
	int MailingInst = 482;
	int TransBkdTime = 483;
	int ExecPriceType = 484;
	int ExecPriceAdjustment = 485;
	int DateOfBirth = 486;
	int TradeReportTransType = 487;
	int CardHolderName = 488;
	int CardNumber = 489;
	int CardExpDate = 490;
	int CardIssNum = 491;
	int PaymentMethod = 492;
	int RegistAcctType = 493;
	int Designation = 494;
	int TaxAdvantageType = 495;
	int RegistRejReasonText = 496;
	int FundRenewWaiv = 497;
	int CashDistribAgentName = 498;
	int CashDistribAgentCode = 499;
	int CashDistribAgentAcctNumber = 500;
	int CashDistribPayRef = 501;
	int CashDistribAgentAcctName = 502;
	int CardStartDate = 503;
	int PaymentDate = 504;
	int PaymentRemitterID = 505;
	int RegistStatus = 506;
	int RegistRejReasonCode = 507;
	int RegistRefID = 508;
	int RegistDtls = 509;
	int NoDistribInsts = 510;
	int RegistEmail = 511;
	int DistribPercentage = 512;
	int RegistID = 513;
	int RegistTransType = 514;
	int ExecValuationPoint = 515;
	int OrderPercent = 516;
	int OwnershipType = 517;
	int NoContAmts = 518;
	int ContAmtType = 519;
	int ContAmtValue = 520;
	int ContAmtCurr = 521;
	int OwnerType = 522;
	int PartySubID = 523;
	int NestedPartyID = 524;
	int NestedPartyIDSource = 525;
	int SecondaryClOrdID = 526;
	int SecondaryExecID = 527;
	int OrderCapacity = 528;
	int OrderRestrictions = 529;
	int MassCancelRequestType = 530;
	int MassCancelResponse = 531;
	int MassCancelRejectReason = 532;
	int TotalAffectedOrders = 533;
	int NoAffectedOrders = 534;
	int AffectedOrderID = 535;
	int AffectedSecondaryOrderID = 536;
	int QuoteType = 537;
	int NestedPartyRole = 538;
	int NoNestedPartyIDs = 539;
	int TotalAccruedInterestAmt = 540;
	int MaturityDate = 541;
	int UnderlyingMaturityDate = 542;
	int InstrRegistry = 543;
	int CashMargin = 544;
	int NestedPartySubID = 545;
	int Scope = 546;
	int MDImplicitDelete = 547;
	int CrossID = 548;
	int CrossType = 549;
	int CrossPrioritization = 550;
	int OrigCrossID = 551;
	int NoSides = 552;
	int Username = 553;
	int Password = 554;
	int NoLegs = 555;
	int LegCurrency = 556;
	int TotNoSecurityTypes = 557;
	int NoSecurityTypes = 558;
	int SecurityListRequestType = 559;
	int SecurityRequestResult = 560;
	int RoundLot = 561;
	int MinTradeVol = 562;
	int MultiLegRptTypeReq = 563;
	int LegPositionEffect = 564;
	int LegCoveredOrUncovered = 565;
	int LegPrice = 566;
	int TradSesStatusRejReason = 567;
	int TradeRequestID = 568;
	int TradeRequestType = 569;
	int PreviouslyReported = 570;
	int TradeReportID = 571;
	int TradeReportRefID = 572;
	int MatchStatus = 573;
	int MatchType = 574;
	int OddLot = 575;
	int NoClearingInstructions = 576;
	int ClearingInstruction = 577;
	int TradeInputSource = 578;
	int TradeInputDevice = 579;
	int NoDates = 580;
	int AccountType = 581;
	int CustOrderCapacity = 582;
	int ClOrdLinkID = 583;
	int MassStatusReqID = 584;
	int MassStatusReqType = 585;
	int OrigOrdModTime = 586;
	int LegSettlType = 587;
	int LegSettlDate = 588;
	int DayBookingInst = 589;
	int BookingUnit = 590;
	int PreallocMethod = 591;
	int UnderlyingCountryOfIssue = 592;
	int UnderlyingStateOrProvinceOfIssue = 593;
	int UnderlyingLocaleOfIssue = 594;
	int UnderlyingInstrRegistry = 595;
	int LegCountryOfIssue = 596;
	int LegStateOrProvinceOfIssue = 597;
	int LegLocaleOfIssue = 598;
	int LegInstrRegistry = 599;
	int LegSymbol = 600;
	int LegSymbolSfx = 601;
	int LegSecurityID = 602;
	int LegSecurityIDSource = 603;
	int NoLegSecurityAltID = 604;
	int LegSecurityAltID = 605;
	int LegSecurityAltIDSource = 606;
	int LegProduct = 607;
	int LegCFICode = 608;
	int LegSecurityType = 609;
	int LegMaturityMonthYear = 610;
	int LegMaturityDate = 611;
	int LegStrikePrice = 612;
	int LegOptAttribute = 613;
	int LegContractMultiplier = 614;
	int LegCouponRate = 615;
	int LegSecurityExchange = 616;
	int LegIssuer = 617;
	int EncodedLegIssuerLen = 618;
	int EncodedLegIssuer = 619;
	int LegSecurityDesc = 620;
	int EncodedLegSecurityDescLen = 621;
	int EncodedLegSecurityDesc = 622;
	int LegRatioQty = 623;
	int LegSide = 624;
	int TradingSessionSubID = 625;
	int AllocType = 626;
	int NoHops = 627;
	int HopCompID = 628;
	int HopSendingTime = 629;
	int HopRefID = 630;
	int MidPx = 631;
	int BidYield = 632;
	int MidYield = 633;
	int OfferYield = 634;
	int ClearingFeeIndicator = 635;
	int WorkingIndicator = 636;
	int LegLastPx = 637;
	int PriorityIndicator = 638;
	int PriceImprovement = 639;
	int Price2 = 640;
	int LastForwardPoints2 = 641;
	int BidForwardPoints2 = 642;
	int OfferForwardPoints2 = 643;
	int RFQReqID = 644;
	int MktBidPx = 645;
	int MktOfferPx = 646;
	int MinBidSize = 647;
	int MinOfferSize = 648;
	int QuoteStatusReqID = 649;
	int LegalConfirm = 650;
	int UnderlyingLastPx = 651;
	int UnderlyingLastQty = 652;
	int SecDefStatus = 653;
	int LegRefID = 654;
	int ContraLegRefID = 655;
	int SettlCurrBidFxRate = 656;
	int SettlCurrOfferFxRate = 657;
	int QuoteRequestRejectReason = 658;
	int SideComplianceID = 659;
	int AcctIDSource = 660;
	int AllocAcctIDSource = 661;
	int BenchmarkPrice = 662;
	int BenchmarkPriceType = 663;
	int ConfirmID = 664;
	int ConfirmStatus = 665;
	int ConfirmTransType = 666;
	int ContractSettlMonth = 667;
	int DeliveryForm = 668;
	int LastParPx = 669;
	int NoLegAllocs = 670;
	int LegAllocAccount = 671;
	int LegIndividualAllocID = 672;
	int LegAllocQty = 673;
	int LegAllocAcctIDSource = 674;
	int LegSettlCurrency = 675;
	int LegBenchmarkCurveCurrency = 676;
	int LegBenchmarkCurveName = 677;
	int LegBenchmarkCurvePoint = 678;
	int LegBenchmarkPrice = 679;
	int LegBenchmarkPriceType = 680;
	int LegBidPx = 681;
	int LegIOIQty = 682;
	int NoLegStipulations = 683;
	int LegOfferPx = 684;
	int LegOrderQty = 685;
	int LegPriceType = 686;
	int LegQty = 687;
	int LegStipulationType = 688;
	int LegStipulationValue = 689;
	int LegSwapType = 690;
	int Pool = 691;
	int QuotePriceType = 692;
	int QuoteRespID = 693;
	int QuoteRespType = 694;
	int QuoteQualifier = 695;
	int YieldRedemptionDate = 696;
	int YieldRedemptionPrice = 697;
	int YieldRedemptionPriceType = 698;
	int BenchmarkSecurityID = 699;
	int ReversalIndicator = 700;
	int YieldCalcDate = 701;
	int NoPositions = 702;
	int PosType = 703;
	int LongQty = 704;
	int ShortQty = 705;
	int PosQtyStatus = 706;
	int PosAmtType = 707;
	int PosAmt = 708;
	int PosTransType = 709;
	int PosReqID = 710;
	int NoUnderlyings = 711;
	int PosMaintAction = 712;
	int OrigPosReqRefID = 713;
	int PosMaintRptRefID = 714;
	int ClearingBusinessDate = 715;
	int SettlSessID = 716;
	int SettlSessSubID = 717;
	int AdjustmentType = 718;
	int ContraryInstructionIndicator = 719;
	int PriorSpreadIndicator = 720;
	int PosMaintRptID = 721;
	int PosMaintStatus = 722;
	int PosMaintResult = 723;
	int PosReqType = 724;
	int ResponseTransportType = 725;
	int ResponseDestination = 726;
	int TotalNumPosReports = 727;
	int PosReqResult = 728;
	int PosReqStatus = 729;
	int SettlPrice = 730;
	int SettlPriceType = 731;
	int UnderlyingSettlPrice = 732;
	int UnderlyingSettlPriceType = 733;
	int PriorSettlPrice = 734;
	int NoQuoteQualifiers = 735;
	int AllocSettlCurrency = 736;
	int AllocSettlCurrAmt = 737;
	int InterestAtMaturity = 738;
	int LegDatedDate = 739;
	int LegPool = 740;
	int AllocInterestAtMaturity = 741;
	int AllocAccruedInterestAmt = 742;
	int DeliveryDate = 743;
	int AssignmentMethod = 744;
	int AssignmentUnit = 745;
	int OpenInterest = 746;
	int ExerciseMethod = 747;
	int TotNumTradeReports = 748;
	int TradeRequestResult = 749;
	int TradeRequestStatus = 750;
	int TradeReportRejectReason = 751;
	int SideMultiLegReportingType = 752;
	int NoPosAmt = 753;
	int AutoAcceptIndicator = 754;
	int AllocReportID = 755;
	int NoNested2PartyIDs = 756;
	int Nested2PartyID = 757;
	int Nested2PartyIDSource = 758;
	int Nested2PartyRole = 759;
	int Nested2PartySubID = 760;
	int BenchmarkSecurityIDSource = 761;
	int SecuritySubType = 762;
	int UnderlyingSecuritySubType = 763;
	int LegSecuritySubType = 764;
	int AllowableOneSidednessPct = 765;
	int AllowableOneSidednessValue = 766;
	int AllowableOneSidednessCurr = 767;
	int NoTrdRegTimestamps = 768;
	int TrdRegTimestamp = 769;
	int TrdRegTimestampType = 770;
	int TrdRegTimestampOrigin = 771;
	int ConfirmRefID = 772;
	int ConfirmType = 773;
	int ConfirmRejReason = 774;
	int BookingType = 775;
	int IndividualAllocRejCode = 776;
	int SettlInstMsgID = 777;
	int NoSettlInst = 778;
	int LastUpdateTime = 779;
	int AllocSettlInstType = 780;
	int NoSettlPartyIDs = 781;
	int SettlPartyID = 782;
	int SettlPartyIDSource = 783;
	int SettlPartyRole = 784;
	int SettlPartySubID = 785;
	int SettlPartySubIDType = 786;
	int DlvyInstType = 787;
	int TerminationType = 788;
	int NextExpectedMsgSeqNum = 789;
	int OrdStatusReqID = 790;
	int SettlInstReqID = 791;
	int SettlInstReqRejCode = 792;
	int SecondaryAllocID = 793;
	int AllocReportType = 794;
	int AllocReportRefID = 795;
	int AllocCancReplaceReason = 796;
	int CopyMsgIndicator = 797;
	int AllocAccountType = 798;
	int OrderAvgPx = 799;
	int OrderBookingQty = 800;
	int NoSettlPartySubIDs = 801;
	int NoPartySubIDs = 802;
	int PartySubIDType = 803;
	int NoNestedPartySubIDs = 804;
	int NestedPartySubIDType = 805;
	int NoNested2PartySubIDs = 806;
	int Nested2PartySubIDType = 807;
	int AllocIntermedReqType = 808;
	int NoUsernames = 809;
	int UnderlyingPx = 810;
	int PriceDelta = 811;
	int ApplQueueMax = 812;
	int ApplQueueDepth = 813;
	int ApplQueueResolution = 814;
	int ApplQueueAction = 815;
	int NoAltMDSource = 816;
	int AltMDSourceID = 817;
	int SecondaryTradeReportID = 818;
	int AvgPxIndicator = 819;
	int TradeLinkID = 820;
	int OrderInputDevice = 821;
	int UnderlyingTradingSessionID = 822;
	int UnderlyingTradingSessionSubID = 823;
	int TradeLegRefID = 824;
	int ExchangeRule = 825;
	int TradeAllocIndicator = 826;
	int ExpirationCycle = 827;
	int TrdType = 828;
	int TrdSubType = 829;
	int TransferReason = 830;
	int AsgnReqID = 831;
	int TotNumAssignmentReports = 832;
	int AsgnRptID = 833;
	int ThresholdAmount = 834;
	int PegMoveType = 835;
	int PegOffsetType = 836;
	int PegLimitType = 837;
	int PegRoundDirection = 838;
	int PeggedPrice = 839;
	int PegScope = 840;
	int DiscretionMoveType = 841;
	int DiscretionOffsetType = 842;
	int DiscretionLimitType = 843;
	int DiscretionRoundDirection = 844;
	int DiscretionPrice = 845;
	int DiscretionScope = 846;
	int TargetStrategy = 847;
	int TargetStrategyParameters = 848;
	int ParticipationRate = 849;
	int TargetStrategyPerformance = 850;
	int LastLiquidityInd = 851;
	int PublishTrdIndicator = 852;
	int ShortSaleReason = 853;
	int QtyType = 854;
	int SecondaryTrdType = 855;
	int TradeReportType = 856;
	int AllocNoOrdersType = 857;
	int SharedCommission = 858;
	int ConfirmReqID = 859;
	int AvgParPx = 860;
	int ReportedPx = 861;
	int NoCapacities = 862;
	int OrderCapacityQty = 863;
	int NoEvents = 864;
	int EventType = 865;
	int EventDate = 866;
	int EventPx = 867;
	int EventText = 868;
	int PctAtRisk = 869;
	int NoInstrAttrib = 870;
	int InstrAttribType = 871;
	int InstrAttribValue = 872;
	int DatedDate = 873;
	int InterestAccrualDate = 874;
	int CPProgram = 875;
	int CPRegType = 876;
	int UnderlyingCPProgram = 877;
	int UnderlyingCPRegType = 878;
	int UnderlyingQty = 879;
	int TrdMatchID = 880;
	int SecondaryTradeReportRefID = 881;
	int UnderlyingDirtyPrice = 882;
	int UnderlyingEndPrice = 883;
	int UnderlyingStartValue = 884;
	int UnderlyingCurrentValue = 885;
	int UnderlyingEndValue = 886;
	int NoUnderlyingStips = 887;
	int UnderlyingStipType = 888;
	int UnderlyingStipValue = 889;
	int MaturityNetMoney = 890;
	int MiscFeeBasis = 891;
	int TotNoAllocs = 892;
	int LastFragment = 893;
	int CollReqID = 894;
	int CollAsgnReason = 895;
	int CollInquiryQualifier = 896;
	int NoTrades = 897;
	int MarginRatio = 898;
	int MarginExcess = 899;
	int TotalNetValue = 900;
	int CashOutstanding = 901;
	int CollAsgnID = 902;
	int CollAsgnTransType = 903;
	int CollRespID = 904;
	int CollAsgnRespType = 905;
	int CollAsgnRejectReason = 906;
	int CollAsgnRefID = 907;
	int CollRptID = 908;
	int CollInquiryID = 909;
	int CollStatus = 910;
	int TotNumReports = 911;
	int LastRptRequested = 912;
	int AgreementDesc = 913;
	int AgreementID = 914;
	int AgreementDate = 915;
	int StartDate = 916;
	int EndDate = 917;
	int AgreementCurrency = 918;
	int DeliveryType = 919;
	int EndAccruedInterestAmt = 920;
	int StartCash = 921;
	int EndCash = 922;
	int UserRequestID = 923;
	int UserRequestType = 924;
	int NewPassword = 925;
	int UserStatus = 926;
	int UserStatusText = 927;
	int StatusValue = 928;
	int StatusText = 929;
	int RefCompID = 930;
	int RefSubID = 931;
	int NetworkResponseID = 932;
	int NetworkRequestID = 933;
	int LastNetworkResponseID = 934;
	int NetworkRequestType = 935;
	int NoCompIDs = 936;
	int NetworkStatusResponseType = 937;
	int NoCollInquiryQualifier = 938;
	int TrdRptStatus = 939;
	int AffirmStatus = 940;
	int UnderlyingStrikeCurrency = 941;
	int LegStrikeCurrency = 942;
	int TimeBracket = 943;
	int CollAction = 944;
	int CollInquiryStatus = 945;
	int CollInquiryResult = 946;
	int StrikeCurrency = 947;
	int NoNested3PartyIDs = 948;
	int Nested3PartyID = 949;
	int Nested3PartyIDSource = 950;
	int Nested3PartyRole = 951;
	int NoNested3PartySubIDs = 952;
	int Nested3PartySubID = 953;
	int Nested3PartySubIDType = 954;
	int LegContractSettlMonth = 955;
	int LegInterestAccrualDate = 956;
	int NoStrategyParameters = 957;
	int StrategyParameterName = 958;
	int StrategyParameterType = 959;
	int StrategyParameterValue = 960;
	int HostCrossID = 961;
	int SideTimeInForce = 962;
	int MDReportID = 963;
	int SecurityReportID = 964;
	int SecurityStatus = 965;
	int SettleOnOpenFlag = 966;
	int StrikeMultiplier = 967;
	int StrikeValue = 968;
	int MinPriceIncrement = 969;
	int PositionLimit = 970;
	int NTPositionLimit = 971;
	int UnderlyingAllocationPercent = 972;
	int UnderlyingCashAmount = 973;
	int UnderlyingCashType = 974;
	int UnderlyingSettlementType = 975;
	int QuantityDate = 976;
	int ContIntRptID = 977;
	int LateIndicator = 978;
	int InputSource = 979;
	int SecurityUpdateAction = 980;
	int NoExpiration = 981;
	int ExpirationQtyType = 982;
	int ExpQty = 983;
	int NoUnderlyingAmounts = 984;
	int UnderlyingPayAmount = 985;
	int UnderlyingCollectAmount = 986;
	int UnderlyingSettlementDate = 987;
	int UnderlyingSettlementStatus = 988;
	int SecondaryIndividualAllocID = 989;
	int LegReportID = 990;
	int RndPx = 991;
	int IndividualAllocType = 992;
	int AllocCustomerCapacity = 993;
	int TierCode = 994;
	int UnitOfMeasure = 996;
	int TimeUnit = 997;
	int UnderlyingUnitOfMeasure = 998;
	int LegUnitOfMeasure = 999;
	int UnderlyingTimeUnit = 1000;
	int LegTimeUnit = 1001;
	int AllocMethod = 1002;
	int TradeID = 1003;
	int SideTradeReportID = 1005;
	int SideFillStationCd = 1006;
	int SideReasonCd = 1007;
	int SideTrdSubTyp = 1008;
	int SideLastQty = 1009;
	int MessageEventSource = 1011;
	int SideTrdRegTimestamp = 1012;
	int SideTrdRegTimestampType = 1013;
	int SideTrdRegTimestampSrc = 1014;
	int AsOfIndicator = 1015;
	int NoSideTrdRegTS = 1016;
	int LegOptionRatio = 1017;
	int NoInstrumentParties = 1018;
	int InstrumentPartyID = 1019;
	int TradeVolume = 1020;
	int MDBookType = 1021;
	int MDFeedType = 1022;
	int MDPriceLevel = 1023;
	int MDOriginType = 1024;
	int FirstPx = 1025;
	int MDEntrySpotRate = 1026;
	int MDEntryForwardPoints = 1027;
	int ManualOrderIndicator = 1028;
	int CustDirectedOrder = 1029;
	int ReceivedDeptID = 1030;
	int CustOrderHandlingInst = 1031;
	int OrderHandlingInstSource = 1032;
	int DeskType = 1033;
	int DeskTypeSource = 1034;
	int DeskOrderHandlingInst = 1035;
	int ExecAckStatus = 1036;
	int UnderlyingDeliveryAmount = 1037;
	int UnderlyingCapValue = 1038;
	int UnderlyingSettlMethod = 1039;
	int SecondaryTradeID = 1040;
	int FirmTradeID = 1041;
	int SecondaryFirmTradeID = 1042;
	int CollApplType = 1043;
	int UnderlyingAdjustedQuantity = 1044;
	int UnderlyingFXRate = 1045;
	int UnderlyingFXRateCalc = 1046;
	int AllocPositionEffect = 1047;
	int DealingCapacity = 1048;
	int InstrmtAssignmentMethod = 1049;
	int InstrumentPartyIDSource = 1050;
	int InstrumentPartyRole = 1051;
	int NoInstrumentPartySubIDs = 1052;
	int InstrumentPartySubID = 1053;
	int InstrumentPartySubIDType = 1054;
	int PositionCurrency = 1055;
	int CalculatedCcyLastQty = 1056;
	int AggressorIndicator = 1057;
	int NoUndlyInstrumentParties = 1058;
	int UnderlyingInstrumentPartyID = 1059;
	int UnderlyingInstrumentPartyIDSource = 1060;
	int UnderlyingInstrumentPartyRole = 1061;
	int NoUndlyInstrumentPartySubIDs = 1062;
	int UnderlyingInstrumentPartySubID = 1063;
	int UnderlyingInstrumentPartySubIDType = 1064;
	int BidSwapPoints = 1065;
	int OfferSwapPoints = 1066;
	int LegBidForwardPoints = 1067;
	int LegOfferForwardPoints = 1068;
	int SwapPoints = 1069;
	int MDQuoteType = 1070;
	int LastSwapPoints = 1071;
	int SideGrossTradeAmt = 1072;
	int LegLastForwardPoints = 1073;
	int LegCalculatedCcyLastQty = 1074;
	int LegGrossTradeAmt = 1075;
	int MaturityTime = 1079;
	int RefOrderID = 1080;
	int RefOrderIDSource = 1081;
	int SecondaryDisplayQty = 1082;
	int DisplayWhen = 1083;
	int DisplayMethod = 1084;
	int DisplayLowQty = 1085;
	int DisplayHighQty = 1086;
	int DisplayMinIncr = 1087;
	int RefreshQty = 1088;
	int MatchIncrement = 1089;
	int MaxPriceLevels = 1090;
	int PreTradeAnonymity = 1091;
	int PriceProtectionScope = 1092;
	int LotType = 1093;
	int PegPriceType = 1094;
	int PeggedRefPrice = 1095;
	int PegSecurityIDSource = 1096;
	int PegSecurityID = 1097;
	int PegSymbol = 1098;
	int PegSecurityDesc = 1099;
	int TriggerType = 1100;
	int TriggerAction = 1101;
	int TriggerPrice = 1102;
	int TriggerSymbol = 1103;
	int TriggerSecurityID = 1104;
	int TriggerSecurityIDSource = 1105;
	int TriggerSecurityDesc = 1106;
	int TriggerPriceType = 1107;
	int TriggerPriceTypeScope = 1108;
	int TriggerPriceDirection = 1109;
	int TriggerNewPrice = 1110;
	int TriggerOrderType = 1111;
	int TriggerNewQty = 1112;
	int TriggerTradingSessionID = 1113;
	int TriggerTradingSessionSubID = 1114;
	int OrderCategory = 1115;
	int NoRootPartyIDs = 1116;
	int RootPartyID = 1117;
	int RootPartyIDSource = 1118;
	int RootPartyRole = 1119;
	int NoRootPartySubIDs = 1120;
	int RootPartySubID = 1121;
	int RootPartySubIDType = 1122;
	int TradeHandlingInstr = 1123;
	int OrigTradeHandlingInstr = 1124;
	int OrigTradeDate = 1125;
	int OrigTradeID = 1126;
	int OrigSecondaryTradeID = 1127;
	int ApplVerID = 1128;
	int CstmApplVerID = 1129;
	int RefApplVerID = 1130;
	int RefCstmApplVerID = 1131;
	int TZTransactTime = 1132;
	int ExDestinationIDSource = 1133;
	int ReportedPxDiff = 1134;
	int RptSys = 1135;
	int AllocClearingFeeIndicator = 1136;
	int DefaultApplVerID = 1137;
	int DisplayQty = 1138;
	int ExchangeSpecialInstructions = 1139;
	int MaxTradeVol = 1140;
	int NoMDFeedTypes = 1141;
	int MatchAlgorithm = 1142;
	int MaxPriceVariation = 1143;
	int ImpliedMarketIndicator = 1144;
	int EventTime = 1145;
	int MinPriceIncrementAmount = 1146;
	int UnitOfMeasureQty = 1147;
	int LowLimitPrice = 1148;
	int HighLimitPrice = 1149;
	int TradingReferencePrice = 1150;
	int SecurityGroup = 1151;
	int LegNumber = 1152;
	int SettlementCycleNo = 1153;
	int SideCurrency = 1154;
	int SideSettlCurrency = 1155;
	int ApplExtID = 1156;
	int CcyAmt = 1157;
	int NoSettlDetails = 1158;
	int SettlObligMode = 1159;
	int SettlObligMsgID = 1160;
	int SettlObligID = 1161;
	int SettlObligTransType = 1162;
	int SettlObligRefID = 1163;
	int SettlObligSource = 1164;
	int NoSettlOblig = 1165;
	int QuoteMsgID = 1166;
	int QuoteEntryStatus = 1167;
	int TotNoCxldQuotes = 1168;
	int TotNoAccQuotes = 1169;
	int TotNoRejQuotes = 1170;
	int PrivateQuote = 1171;
	int RespondentType = 1172;
	int MDSubBookType = 1173;
	int SecurityTradingEvent = 1174;
	int NoStatsIndicators = 1175;
	int StatsType = 1176;
	int NoOfSecSizes = 1177;
	int MDSecSizeType = 1178;
	int MDSecSize = 1179;
	int ApplID = 1180;
	int ApplSeqNum = 1181;
	int ApplBegSeqNum = 1182;
	int ApplEndSeqNum = 1183;
	int SecurityXMLLen = 1184;
	int SecurityXML = 1185;
	int SecurityXMLSchema = 1186;
	int RefreshIndicator = 1187;
	int Volatility = 1188;
	int TimeToExpiration = 1189;
	int RiskFreeRate = 1190;
	int PriceUnitOfMeasure = 1191;
	int PriceUnitOfMeasureQty = 1192;
	int SettlMethod = 1193;
	int ExerciseStyle = 1194;
	int OptPayoutAmount = 1195;
	int PriceQuoteMethod = 1196;
	int ValuationMethod = 1197;
	int ListMethod = 1198;
	int CapPrice = 1199;
	int FloorPrice = 1200;
	int NoStrikeRules = 1201;
	int StartStrikePxRange = 1202;
	int EndStrikePxRange = 1203;
	int StrikeIncrement = 1204;
	int NoTickRules = 1205;
	int StartTickPriceRange = 1206;
	int EndTickPriceRange = 1207;
	int TickIncrement = 1208;
	int TickRuleType = 1209;
	int NestedInstrAttribType = 1210;
	int NestedInstrAttribValue = 1211;
	int LegMaturityTime = 1212;
	int UnderlyingMaturityTime = 1213;
	int DerivativeSymbol = 1214;
	int DerivativeSymbolSfx = 1215;
	int DerivativeSecurityID = 1216;
	int DerivativeSecurityIDSource = 1217;
	int NoDerivativeSecurityAltID = 1218;
	int DerivativeSecurityAltID = 1219;
	int DerivativeSecurityAltIDSource = 1220;
	int SecondaryLowLimitPrice = 1221;
	int MaturityRuleID = 1222;
	int StrikeRuleID = 1223;
	int LegUnitOfMeasureQty = 1224;
	int DerivativeOptPayAmount = 1225;
	int EndMaturityMonthYear = 1226;
	int ProductComplex = 1227;
	int DerivativeProductComplex = 1228;
	int MaturityMonthYearIncrement = 1229;
	int SecondaryHighLimitPrice = 1230;
	int MinLotSize = 1231;
	int NoExecInstRules = 1232;
	int NoLotTypeRules = 1234;
	int NoMatchRules = 1235;
	int NoMaturityRules = 1236;
	int NoOrdTypeRules = 1237;
	int NoTimeInForceRules = 1239;
	int SecondaryTradingReferencePrice = 1240;
	int StartMaturityMonthYear = 1241;
	int FlexProductEligibilityIndicator = 1242;
	int DerivFlexProductEligibilityIndicator = 1243;
	int FlexibleIndicator = 1244;
	int TradingCurrency = 1245;
	int DerivativeProduct = 1246;
	int DerivativeSecurityGroup = 1247;
	int DerivativeCFICode = 1248;
	int DerivativeSecurityType = 1249;
	int DerivativeSecuritySubType = 1250;
	int DerivativeMaturityMonthYear = 1251;
	int DerivativeMaturityDate = 1252;
	int DerivativeMaturityTime = 1253;
	int DerivativeSettleOnOpenFlag = 1254;
	int DerivativeInstrmtAssignmentMethod = 1255;
	int DerivativeSecurityStatus = 1256;
	int DerivativeInstrRegistry = 1257;
	int DerivativeCountryOfIssue = 1258;
	int DerivativeStateOrProvinceOfIssue = 1259;
	int DerivativeLocaleOfIssue = 1260;
	int DerivativeStrikePrice = 1261;
	int DerivativeStrikeCurrency = 1262;
	int DerivativeStrikeMultiplier = 1263;
	int DerivativeStrikeValue = 1264;
	int DerivativeOptAttribute = 1265;
	int DerivativeContractMultiplier = 1266;
	int DerivativeMinPriceIncrement = 1267;
	int DerivativeMinPriceIncrementAmount = 1268;
	int DerivativeUnitOfMeasure = 1269;
	int DerivativeUnitOfMeasureQty = 1270;
	int DerivativeTimeUnit = 1271;
	int DerivativeSecurityExchange = 1272;
	int DerivativePositionLimit = 1273;
	int DerivativeNTPositionLimit = 1274;
	int DerivativeIssuer = 1275;
	int DerivativeIssueDate = 1276;
	int DerivativeEncodedIssuerLen = 1277;
	int DerivativeEncodedIssuer = 1278;
	int DerivativeSecurityDesc = 1279;
	int DerivativeEncodedSecurityDescLen = 1280;
	int DerivativeEncodedSecurityDesc = 1281;
	int DerivativeSecurityXMLLen = 1282;
	int DerivativeSecurityXML = 1283;
	int DerivativeSecurityXMLSchema = 1284;
	int DerivativeContractSettlMonth = 1285;
	int NoDerivativeEvents = 1286;
	int DerivativeEventType = 1287;
	int DerivativeEventDate = 1288;
	int DerivativeEventTime = 1289;
	int DerivativeEventPx = 1290;
	int DerivativeEventText = 1291;
	int NoDerivativeInstrumentParties = 1292;
	int DerivativeInstrumentPartyID = 1293;
	int DerivativeInstrumentPartyIDSource = 1294;
	int DerivativeInstrumentPartyRole = 1295;
	int NoDerivativeInstrumentPartySubIDs = 1296;
	int DerivativeInstrumentPartySubID = 1297;
	int DerivativeInstrumentPartySubIDType = 1298;
	int DerivativeExerciseStyle = 1299;
	int MarketSegmentID = 1300;
	int MarketID = 1301;
	int MaturityMonthYearIncrementUnits = 1302;
	int MaturityMonthYearFormat = 1303;
	int StrikeExerciseStyle = 1304;
	int SecondaryPriceLimitType = 1305;
	int PriceLimitType = 1306;
	int DerivativeSecurityListRequestType = 1307;
	int ExecInstValue = 1308;
	int NoTradingSessionRules = 1309;
	int NoMarketSegments = 1310;
	int NoDerivativeInstrAttrib = 1311;
	int NoNestedInstrAttrib = 1312;
	int DerivativeInstrAttribType = 1313;
	int DerivativeInstrAttribValue = 1314;
	int DerivativePriceUnitOfMeasure = 1315;
	int DerivativePriceUnitOfMeasureQty = 1316;
	int DerivativeSettlMethod = 1317;
	int DerivativePriceQuoteMethod = 1318;
	int DerivativeValuationMethod = 1319;
	int DerivativeListMethod = 1320;
	int DerivativeCapPrice = 1321;
	int DerivativeFloorPrice = 1322;
	int DerivativePutOrCall = 1323;
	int ListUpdateAction = 1324;
	int ParentMktSegmID = 1325;
	int TradingSessionDesc = 1326;
	int TradSesUpdateAction = 1327;
	int RejectText = 1328;
	int FeeMultiplier = 1329;
	int UnderlyingLegSymbol = 1330;
	int UnderlyingLegSymbolSfx = 1331;
	int UnderlyingLegSecurityID = 1332;
	int UnderlyingLegSecurityIDSource = 1333;
	int NoUnderlyingLegSecurityAltID = 1334;
	int UnderlyingLegSecurityAltID = 1335;
	int UnderlyingLegSecurityAltIDSource = 1336;
	int UnderlyingLegSecurityType = 1337;
	int UnderlyingLegSecuritySubType = 1338;
	int UnderlyingLegMaturityMonthYear = 1339;
	int UnderlyingLegStrikePrice = 1340;
	int UnderlyingLegSecurityExchange = 1341;
	int NoOfLegUnderlyings = 1342;
	int UnderlyingLegPutOrCall = 1343;
	int UnderlyingLegCFICode = 1344;
	int UnderlyingLegMaturityDate = 1345;
	int ApplReqID = 1346;
	int ApplReqType = 1347;
	int ApplResponseType = 1348;
	int ApplTotalMessageCount = 1349;
	int ApplLastSeqNum = 1350;
	int NoApplIDs = 1351;
	int ApplResendFlag = 1352;
	int ApplResponseID = 1353;
	int ApplResponseError = 1354;
	int RefApplID = 1355;
	int ApplReportID = 1356;
	int RefApplLastSeqNum = 1357;
	int LegPutOrCall = 1358;
	int EncodedSymbolLen = 1359;
	int EncodedSymbol = 1360;
	int TotNoFills = 1361;
	int NoFills = 1362;
	int FillExecID = 1363;
	int FillPx = 1364;
	int FillQty = 1365;
	int LegAllocID = 1366;
	int LegAllocSettlCurrency = 1367;
	int TradSesEvent = 1368;
	int MassActionReportID = 1369;
	int NoNotAffectedOrders = 1370;
	int NotAffectedOrderID = 1371;
	int NotAffOrigClOrdID = 1372;
	int MassActionType = 1373;
	int MassActionScope = 1374;
	int MassActionResponse = 1375;
	int MassActionRejectReason = 1376;
	int MultilegModel = 1377;
	int MultilegPriceMethod = 1378;
	int LegVolatility = 1379;
	int DividendYield = 1380;
	int LegDividendYield = 1381;
	int CurrencyRatio = 1382;
	int LegCurrencyRatio = 1383;
	int LegExecInst = 1384;
	int ContingencyType = 1385;
	int ListRejectReason = 1386;
	int NoTrdRepIndicators = 1387;
	int TrdRepPartyRole = 1388;
	int TrdRepIndicator = 1389;
	int TradePublishIndicator = 1390;
	int UnderlyingLegOptAttribute = 1391;
	int UnderlyingLegSecurityDesc = 1392;
	int MarketReqID = 1393;
	int MarketReportID = 1394;
	int MarketUpdateAction = 1395;
	int MarketSegmentDesc = 1396;
	int EncodedMktSegmDescLen = 1397;
	int EncodedMktSegmDesc = 1398;
	int ApplNewSeqNum = 1399;
	int EncryptedPasswordMethod = 1400;
	int EncryptedPasswordLen = 1401;
	int EncryptedPassword = 1402;
	int EncryptedNewPasswordLen = 1403;
	int EncryptedNewPassword = 1404;
	int UnderlyingLegMaturityTime = 1405;
	int RefApplExtID = 1406;
	int DefaultApplExtID = 1407;
	int DefaultCstmApplVerID = 1408;
	int SessionStatus = 1409;
	int DefaultVerIndicator = 1410;
	int Nested4PartySubIDType = 1411;
	int Nested4PartySubID = 1412;
	int NoNested4PartySubIDs = 1413;
	int NoNested4PartyIDs = 1414;
	int Nested4PartyID = 1415;
	int Nested4PartyIDSource = 1416;
	int Nested4PartyRole = 1417;
	int LegLastQty = 1418;
	int UnderlyingExerciseStyle = 1419;
	int LegExerciseStyle = 1420;
	int LegPriceUnitOfMeasure = 1421;
	int LegPriceUnitOfMeasureQty = 1422;
	int UnderlyingUnitOfMeasureQty = 1423;
	int UnderlyingPriceUnitOfMeasure = 1424;
	int UnderlyingPriceUnitOfMeasureQty = 1425;
	int ApplReportType = 1426;
	int SideExecID = 1427;
	int OrderDelay = 1428;
	int OrderDelayUnit = 1429;
	int VenueType = 1430;
	int RefOrdIDReason = 1431;
	int OrigCustOrderCapacity = 1432;
	int RefApplReqID = 1433;
	int ModelType = 1434;
	int ContractMultiplierUnit = 1435;
	int LegContractMultiplierUnit = 1436;
	int UnderlyingContractMultiplierUnit = 1437;
	int DerivativeContractMultiplierUnit = 1438;
	int FlowScheduleType = 1439;
	int LegFlowScheduleType = 1440;
	int UnderlyingFlowScheduleType = 1441;
	int DerivativeFlowScheduleType = 1442;
	int FillLiquidityInd = 1443;
	int SideLiquidityInd = 1444;
	int NoRateSources = 1445;
	int RateSource = 1446;
	int RateSourceType = 1447;
	int ReferencePage = 1448;
	int RestructuringType = 1449;
	int Seniority = 1450;
	int NotionalPercentageOutstanding = 1451;
	int OriginalNotionalPercentageOutstanding = 1452;
	int UnderlyingRestructuringType = 1453;
	int UnderlyingSeniority = 1454;
	int UnderlyingNotionalPercentageOutstanding = 1455;
	int UnderlyingOriginalNotionalPercentageOutstanding = 1456;
	int AttachmentPoint = 1457;
	int DetachmentPoint = 1458;
	int UnderlyingAttachmentPoint = 1459;
	int UnderlyingDetachmentPoint = 1460;
	int NoTargetPartyIDs = 1461;
	int TargetPartyID = 1462;
	int TargetPartyIDSource = 1463;
	int TargetPartyRole = 1464;
	int SecurityListID = 1465;
	int SecurityListRefID = 1466;
	int SecurityListDesc = 1467;
	int EncodedSecurityListDescLen = 1468;
	int EncodedSecurityListDesc = 1469;
	int SecurityListType = 1470;
	int SecurityListTypeSource = 1471;
	int NewsID = 1472;
	int NewsCategory = 1473;
	int LanguageCode = 1474;
	int NoNewsRefIDs = 1475;
	int NewsRefID = 1476;
	int NewsRefType = 1477;
	int StrikePriceDeterminationMethod = 1478;
	int StrikePriceBoundaryMethod = 1479;
	int StrikePriceBoundaryPrecision = 1480;
	int UnderlyingPriceDeterminationMethod = 1481;
	int OptPayoutType = 1482;
	int NoComplexEvents = 1483;
	int ComplexEventType = 1484;
	int ComplexOptPayoutAmount = 1485;
	int ComplexEventPrice = 1486;
	int ComplexEventPriceBoundaryMethod = 1487;
	int ComplexEventPriceBoundaryPrecision = 1488;
	int ComplexEventPriceTimeType = 1489;
	int ComplexEventCondition = 1490;
	int NoComplexEventDates = 1491;
	int ComplexEventStartDate = 1492;
	int ComplexEventEndDate = 1493;
	int NoComplexEventTimes = 1494;
	int ComplexEventStartTime = 1495;
	int ComplexEventEndTime = 1496;
	int StreamAsgnReqID = 1497;
	int StreamAsgnReqType = 1498;
	int NoAsgnReqs = 1499;
	int MDStreamID = 1500;
	int StreamAsgnRptID = 1501;
	int StreamAsgnRejReason = 1502;
	int StreamAsgnAckType = 1503;
	int RelSymTransactTime = 1504;
	int PartyDetailsListRequestID = 1505;
	int NoPartyListResponseTypes = 1506;
	int PartyListResponseType = 1507;
	int NoRequestedPartyRoles = 1508;
	int RequestedPartyRole = 1509;
	int PartyDetailsListReportID = 1510;
	int PartyDetailsRequestResult = 1511;
	int TotNoPartyList = 1512;
	int NoPartyList = 1513;
	int NoPartyRelationships = 1514;
	int PartyRelationship = 1515;
	int NoPartyAltIDs = 1516;
	int PartyAltID = 1517;
	int PartyAltIDSource = 1518;
	int NoPartyAltSubIDs = 1519;
	int PartyAltSubID = 1520;
	int PartyAltSubIDType = 1521;
	int NoContextPartyIDs = 1522;
	int ContextPartyID = 1523;
	int ContextPartyIDSource = 1524;
	int ContextPartyRole = 1525;
	int NoContextPartySubIDs = 1526;
	int ContextPartySubID = 1527;
	int ContextPartySubIDType = 1528;
	int NoRiskLimits = 1529;
	int RiskLimitType = 1530;
	int RiskLimitAmount = 1531;
	int RiskLimitCurrency = 1532;
	int RiskLimitPlatform = 1533;
	int NoRiskInstruments = 1534;
	int RiskInstrumentOperator = 1535;
	int RiskSymbol = 1536;
	int RiskSymbolSfx = 1537;
	int RiskSecurityID = 1538;
	int RiskSecurityIDSource = 1539;
	int NoRiskSecurityAltID = 1540;
	int RiskSecurityAltID = 1541;
	int RiskSecurityAltIDSource = 1542;
	int RiskProduct = 1543;
	int RiskProductComplex = 1544;
	int RiskSecurityGroup = 1545;
	int RiskCFICode = 1546;
	int RiskSecurityType = 1547;
	int RiskSecuritySubType = 1548;
	int RiskMaturityMonthYear = 1549;
	int RiskMaturityTime = 1550;
	int RiskRestructuringType = 1551;
	int RiskSeniority = 1552;
	int RiskPutOrCall = 1553;
	int RiskFlexibleIndicator = 1554;
	int RiskCouponRate = 1555;
	int RiskSecurityDesc = 1556;
	int RiskInstrumentSettlType = 1557;
	int RiskInstrumentMultiplier = 1558;
	int NoRiskWarningLevels = 1559;
	int RiskWarningLevelPercent = 1560;
	int RiskWarningLevelName = 1561;
	int NoRelatedPartyIDs = 1562;
	int RelatedPartyID = 1563;
	int RelatedPartyIDSource = 1564;
	int RelatedPartyRole = 1565;
	int NoRelatedPartySubIDs = 1566;
	int RelatedPartySubID = 1567;
	int RelatedPartySubIDType = 1568;
	int NoRelatedPartyAltIDs = 1569;
	int RelatedPartyAltID = 1570;
	int RelatedPartyAltIDSource = 1571;
	int NoRelatedPartyAltSubIDs = 1572;
	int RelatedPartyAltSubID = 1573;
	int RelatedPartyAltSubIDType = 1574;
	int NoRelatedContextPartyIDs = 1575;
	int RelatedContextPartyID = 1576;
	int RelatedContextPartyIDSource = 1577;
	int RelatedContextPartyRole = 1578;
	int NoRelatedContextPartySubIDs = 1579;
	int RelatedContextPartySubID = 1580;
	int RelatedContextPartySubIDType = 1581;
	int NoRelationshipRiskLimits = 1582;
	int RelationshipRiskLimitType = 1583;
	int RelationshipRiskLimitAmount = 1584;
	int RelationshipRiskLimitCurrency = 1585;
	int RelationshipRiskLimitPlatform = 1586;
	int NoRelationshipRiskInstruments = 1587;
	int RelationshipRiskInstrumentOperator = 1588;
	int RelationshipRiskSymbol = 1589;
	int RelationshipRiskSymbolSfx = 1590;
	int RelationshipRiskSecurityID = 1591;
	int RelationshipRiskSecurityIDSource = 1592;
	int NoRelationshipRiskSecurityAltID = 1593;
	int RelationshipRiskSecurityAltID = 1594;
	int RelationshipRiskSecurityAltIDSource = 1595;
	int RelationshipRiskProduct = 1596;
	int RelationshipRiskProductComplex = 1597;
	int RelationshipRiskSecurityGroup = 1598;
	int RelationshipRiskCFICode = 1599;
	int RelationshipRiskSecurityType = 1600;
	int RelationshipRiskSecuritySubType = 1601;
	int RelationshipRiskMaturityMonthYear = 1602;
	int RelationshipRiskMaturityTime = 1603;
	int RelationshipRiskRestructuringType = 1604;
	int RelationshipRiskSeniority = 1605;
	int RelationshipRiskPutOrCall = 1606;
	int RelationshipRiskFlexibleIndicator = 1607;
	int RelationshipRiskCouponRate = 1608;
	int RelationshipRiskSecurityExchange = 1609;
	int RelationshipRiskSecurityDesc = 1610;
	int RelationshipRiskInstrumentSettlType = 1611;
	int RelationshipRiskInstrumentMultiplier = 1612;
	int NoRelationshipRiskWarningLevels = 1613;
	int RelationshipRiskWarningLevelPercent = 1614;
	int RelationshipRiskWarningLevelName = 1615;
	int RiskSecurityExchange = 1616;
	int StreamAsgnType = 1617;
	int RelationshipRiskEncodedSecurityDescLen = 1618;
	int RelationshipRiskEncodedSecurityDesc = 1619;
	int RiskEncodedSecurityDescLen = 1620;
	int RiskEncodedSecurityDesc = 1621;

}
src/main/java/org/fix4j/engine/tag/StringTag.java
public interface StringTag extends FixTag {
	@Override
	default void dispatch(CharSequence value, TagValueConsumer consumer) {
		consumer.acceptString(this, value);
	}
}


Question: import org.fix4j.engine.tag.DecimalTag;
import org.fix4j.engine.tag.DoubleTag;
import org.fix4j.engine.tag.FixTag;
import org.fix4j.engine.tag.GroupTag;
import org.fix4j.engine.tag.IntTag;
import org.fix4j.engine.tag.LongTag;
import org.fix4j.engine.tag.ObjectTag;
import org.fix4j.engine.tag.StringTag;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.fix4j.engine.exception.InvalidValueException;
import org.fix4j.engine.stream.TagValueConsumer;
import org.fix4j.engine.tag.BooleanTag;
import org.fix4j.engine.tag.CharTag;
/**
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 fix4j.org (tools4j.org)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package org.fix4j.engine.validate;



public class ValidatingConsumer implements TagValueConsumer {
	
	private final Map<FixTag, Validity> validities = new ConcurrentHashMap<>();
	
	public Validity isValid(final FixTag tag) {
		return validities.get(tag);
	}
	
	@Override
Answer: 	public void acceptBoolean(final BooleanTag tag, boolean value) {