c paste
bool GameCore::AI::TryToSubmitChoiceAndOption<>
               (Manager *congress,PlayerTypes player,ResolutionTypes res,int option,
               UnitPromotionClassTypes preferredChoice)

{
  IntRange iRandTarget;
  uint resolutions_size;
  UnitPromotionClassTypes *resolutions_begin;
  UnitPromotionClassTypes *resolutions_end;
  Instance *pkGame;
  UnitPromotionClassTypes iPreferredTarget;
  UnitPromotionClassTypes ePromotionClassType;
  Vector<> resolutions;
  iPreferredTarget = preferredChoice;
  Types::Vector<>::Vector(&resolutions);
  GameCore::Congress::Manager::GetPossibleResolutionTargets<>(congress,player,res,&resolutions);
  resolutions_begin = Types::Vector<>::begin(&resolutions);
  resolutions_end = Types::Vector<>::end(&resolutions);
  for (; (resolutions_begin != resolutions_end && (*resolutions_begin != iPreferredTarget));
      resolutions_begin = resolutions_begin + 1) {
  }
  resolutions_end = Types::Vector<>::end(&resolutions);
  if (resolutions_begin == resolutions_end) {
    pkGame = GameCore::Game::GetInstance();
    resolutions_size = Types::Vector<>::size(&resolutions);
    iRandTarget = GameCore::Game::Instance::GetRandNum(pkGame,(IntRange)resolutions_size,"Random congress resolution target");
    ePromotionClassType = (UnitPromotionClassTypes)iRandTarget;
    GameCore::Congress::Manager::SubmitResolutionDecisionFromUi<>(congress,player,res,&ePromotionClassType,option);
  }
  else {
    GameCore::Congress::Manager::SubmitResolutionDecision<>(congress,player,res,&iPreferredTarget,option);
  }
  Types::Vector<>::~Vector(&resolutions);
  return resolutions_begin != resolutions_end;
}