Program: 7631
Project: 7631
Buggy source:
@Override public void configure() throws Exception {
  from("String_Node_Str").choice().when(header("String_Node_Str").isEqualTo(LoginReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(ViewProfileReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetEventsReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetMarketReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetMarketPricesReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(PlaceBetsReq.class.toString())).to("String_Node_Str").otherwise().to("String_Node_Str").end();
  from("String_Node_Str").throttle(loginThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(viewProfileThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getEventsThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getMarketThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getMarketPricesThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(placeBetsThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
}

Fixed version (ground truth):
@Override public void configure() throws Exception {
  from("String_Node_Str").setHeader("String_Node_Str",new Expression(){
    @Override public <T>T evaluate(    Exchange arg0,    Class<T> arg1){
      return null;
    }
  }
).choice().when(header("String_Node_Str").isEqualTo(LoginReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(ViewProfileReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetEventsReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetMarketReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(GetMarketPricesReq.class.toString())).to("String_Node_Str").when(header("String_Node_Str").isEqualTo(PlaceBetsReq.class.toString())).to("String_Node_Str").otherwise().to("String_Node_Str").end();
  from("String_Node_Str").throttle(loginThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(viewProfileThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getEventsThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getMarketThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(getMarketPricesThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
  from("String_Node_Str").throttle(placeBetsThrottle).timePeriodMillis(60000).beanRef("String_Node_Str","String_Node_Str").end();
}