gt: 		Vector<TTSChunk> chunks = TTSChunkFactory
context: package com.smartdevicelink.proxy;
  
  import java.util.List;
  import java.util.Vector;
  
  import com.smartdevicelink.proxy.rpc.AddCommand;
  import com.smartdevicelink.proxy.rpc.AddSubMenu;
  import com.smartdevicelink.proxy.rpc.Alert;
  import com.smartdevicelink.proxy.rpc.AlertManeuver;
  import com.smartdevicelink.proxy.rpc.ChangeRegistration;
  import com.smartdevicelink.proxy.rpc.Choice;
  import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSet;
  import com.smartdevicelink.proxy.rpc.DeleteCommand;
  import com.smartdevicelink.proxy.rpc.DeleteFile;
  import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSet;
  import com.smartdevicelink.proxy.rpc.DeleteSubMenu;
  import com.smartdevicelink.proxy.rpc.EncodedSyncPData;
  import com.smartdevicelink.proxy.rpc.EndAudioPassThru;
  import com.smartdevicelink.proxy.rpc.GetDTCs;
  import com.smartdevicelink.proxy.rpc.GetVehicleData;
  import com.smartdevicelink.proxy.rpc.Image;
  import com.smartdevicelink.proxy.rpc.ListFiles;
  import com.smartdevicelink.proxy.rpc.MenuParams;
  import com.smartdevicelink.proxy.rpc.PerformAudioPassThru;
  import com.smartdevicelink.proxy.rpc.PerformInteraction;
  import com.smartdevicelink.proxy.rpc.PutFile;
  import com.smartdevicelink.proxy.rpc.ReadDID;
  import com.smartdevicelink.proxy.rpc.RegisterAppInterface;
  import com.smartdevicelink.proxy.rpc.ScrollableMessage;
  import com.smartdevicelink.proxy.rpc.SetAppIcon;
  import com.smartdevicelink.proxy.rpc.SetDisplayLayout;
  import com.smartdevicelink.proxy.rpc.SetGlobalProperties;
  import com.smartdevicelink.proxy.rpc.SetMediaClockTimer;
  import com.smartdevicelink.proxy.rpc.Show;
  import com.smartdevicelink.proxy.rpc.ShowConstantTBT;
  import com.smartdevicelink.proxy.rpc.Slider;
  import com.smartdevicelink.proxy.rpc.SoftButton;
  import com.smartdevicelink.proxy.rpc.Speak;
  import com.smartdevicelink.proxy.rpc.StartTime;
  import com.smartdevicelink.proxy.rpc.SubscribeButton;
  import com.smartdevicelink.proxy.rpc.SubscribeVehicleData;
  import com.smartdevicelink.proxy.rpc.smartdevicelinkMsgVersion;
  import com.smartdevicelink.proxy.rpc.SyncPData;
  import com.smartdevicelink.proxy.rpc.TTSChunk;
  import com.smartdevicelink.proxy.rpc.Turn;
  import com.smartdevicelink.proxy.rpc.UnregisterAppInterface;
  import com.smartdevicelink.proxy.rpc.UnsubscribeButton;
  import com.smartdevicelink.proxy.rpc.UnsubscribeVehicleData;
  import com.smartdevicelink.proxy.rpc.UpdateTurnList;
  import com.smartdevicelink.proxy.rpc.VrHelpItem;
  import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
  import com.smartdevicelink.proxy.rpc.enums.AudioType;
  import com.smartdevicelink.proxy.rpc.enums.BitsPerSample;
  import com.smartdevicelink.proxy.rpc.enums.ButtonName;
  import com.smartdevicelink.proxy.rpc.enums.FileType;
  import com.smartdevicelink.proxy.rpc.enums.ImageType;
  import com.smartdevicelink.proxy.rpc.enums.InteractionMode;
  import com.smartdevicelink.proxy.rpc.enums.Language;
  import com.smartdevicelink.proxy.rpc.enums.MobileAppState;
  import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
  import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
  import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
  import com.smartdevicelink.proxy.rpc.pm.AddProfile;
  import com.smartdevicelink.proxy.rpc.pm.AppStateChanged;
  import com.smartdevicelink.proxy.rpc.pm.LoadProfile;
  import com.smartdevicelink.proxy.rpc.pm.ProfileBinaryPacketizer;
  import com.smartdevicelink.proxy.rpc.pm.RemoveProfile;
  import com.smartdevicelink.proxy.rpc.pm.SendAppToProfileMessage;
  import com.smartdevicelink.proxy.rpc.pm.UnloadProfile;
  
  public class RPCRequestFactory {
  
  	public static final int NGN_MEDIA_SCREEN_APP_NAME_MAX_LENGTH = 5;
  	public static final int SMARTDEVICELINK_MSG_MAJOR_VERSION = 1;
  	public static final int SMARTDEVICELINK_MSG_MINOR_VERSION = 0;
  
  	public static EncodedSyncPData buildEncodedSyncPData(
  			Vector<String> data, Integer correlationID) {
  		
  		if(data == null) return null;
  		
  		EncodedSyncPData msg = new EncodedSyncPData();
  		msg.setCorrelationID(correlationID);
  		msg.setData(data);
  		return msg;
  	}
  	
  	public static SyncPData buildSyncPData(
  			byte[] data, Integer correlationID) {
  		
  		if(data == null) return null;
  		
  		SyncPData msg = new SyncPData();
  		msg.setCorrelationID(correlationID);
  		msg.setSyncPData(data);
  		return msg;
  	}
  		
  
  	public static AddCommand buildAddCommand(Integer commandID,
  			String menuText, Integer parentID, Integer position,
  			Vector<String> vrCommands, Image cmdIcon, Integer correlationID) {
  		AddCommand msg = new AddCommand();
  		msg.setCorrelationID(correlationID);
  		msg.setCmdID(commandID);
  		msg.setVrCommands(vrCommands);
  		
  		if (cmdIcon != null) msg.setCmdIcon(cmdIcon);
  		
  		if(menuText != null || parentID != null || position != null) {
  			MenuParams menuParams = new MenuParams();
  			menuParams.setMenuName(menuText);
  			menuParams.setPosition(position);
  			menuParams.setParentID(parentID);
  			msg.setMenuParams(menuParams);
  		}
  		
  		return msg;
  	}
  	
  	public static AddCommand buildAddCommand(Integer commandID,
  			String menuText, Integer parentID, Integer position,
  			Vector<String> vrCommands, String IconValue, ImageType IconType, Integer correlationID) {
  		AddCommand msg = new AddCommand();
  		msg.setCorrelationID(correlationID);
  		msg.setCmdID(commandID);
  		
  		if (vrCommands != null) msg.setVrCommands(vrCommands);
  		
  		Image cmdIcon = null;
  		
  		if (IconValue != null && IconType != null)
  		{
  			cmdIcon = new Image();
  			cmdIcon.setValue(IconValue);			
  			cmdIcon.setImageType(IconType);			
  		}				
  		
  		if (cmdIcon != null) msg.setCmdIcon(cmdIcon);
  		
  		if(menuText != null || parentID != null || position != null) {
  			MenuParams menuParams = new MenuParams();
  			menuParams.setMenuName(menuText);
  			menuParams.setPosition(position);
  			menuParams.setParentID(parentID);
  			msg.setMenuParams(menuParams);
  		}
  		
  		return msg;
  	}
  
  		
  	public static AddCommand buildAddCommand(Integer commandID,
  			String menuText, Integer parentID, Integer position,
  			Vector<String> vrCommands, Integer correlationID) {
  		AddCommand msg = new AddCommand();
  		msg.setCorrelationID(correlationID);
  		msg.setCmdID(commandID);
  		msg.setVrCommands(vrCommands);
  		
  		if(menuText != null || parentID != null || position != null) {
  			MenuParams menuParams = new MenuParams();
  			menuParams.setMenuName(menuText);
  			menuParams.setPosition(position);
  			menuParams.setParentID(parentID);
  			msg.setMenuParams(menuParams);
  		}
  		
  		return msg;
  	}
  	
  	public static AddCommand buildAddCommand(Integer commandID,
  			String menuText, Vector<String> vrCommands, Integer correlationID) {
  		AddCommand msg = buildAddCommand(commandID, menuText, null, null,
  				vrCommands, correlationID);
  		return msg;
  	}
  	
  	public static AddCommand buildAddCommand(Integer commandID,
  			Vector<String> vrCommands, Integer correlationID) {
  		AddCommand msg = new AddCommand();
  		msg.setCorrelationID(correlationID);
  		msg.setCmdID(commandID);
  		msg.setVrCommands(vrCommands);
  
  		return msg;
  	}
  
  	public static AddSubMenu buildAddSubMenu(Integer menuID, String menuName,
  			Integer correlationID) {
  		AddSubMenu msg = buildAddSubMenu(menuID, menuName, null, correlationID);
  		return msg;
  	}
  
  	public static AddSubMenu buildAddSubMenu(Integer menuID, String menuName,
  			Integer position, Integer correlationID) {
  		AddSubMenu msg = new AddSubMenu();
  		msg.setCorrelationID(correlationID);
  		msg.setMenuName(menuName);
  		msg.setMenuID(menuID);
  		msg.setPosition(position);
  
  		return msg;
  	}
  	
  
  	public static Alert buildAlert(String ttsText, Boolean playTone, Vector<SoftButton> softButtons,
  			Integer correlationID) {
  		Vector<TTSChunk> chunks = TTSChunkFactory
  				.createSimpleTTSChunks(ttsText);
  		Alert msg = buildAlert(chunks, null, null, null, playTone, null, softButtons,
  				correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(String alertText1, String alertText2, String alertText3,
  			Integer duration, Vector<SoftButton> softButtons, Integer correlationID) {
  		Alert msg = buildAlert((Vector<TTSChunk>) null, alertText1, alertText2, alertText3,
  				null, duration, softButtons, correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(String ttsText, String alertText1,
  			String alertText2, String alertText3, Boolean playTone, Integer duration, Vector<SoftButton> softButtons,
  			Integer correlationID) {
  		Vector<TTSChunk> chunks = TTSChunkFactory
  				.createSimpleTTSChunks(ttsText);
  		Alert msg = buildAlert(chunks, alertText1, alertText2, alertText3, playTone, 
  				duration, softButtons, correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(Vector<TTSChunk> chunks, Boolean playTone, Vector<SoftButton> softButtons,
  			Integer correlationID) {
  		Alert msg = buildAlert(chunks, null, null, null, playTone, null, softButtons, correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(Vector<TTSChunk> ttsChunks,
  			String alertText1, String alertText2, String alertText3, Boolean playTone,
  			Integer duration, Vector<SoftButton> softButtons, Integer correlationID) {
  		Alert msg = new Alert();
  		msg.setCorrelationID(correlationID);
  		msg.setAlertText1(alertText1);
  		msg.setAlertText2(alertText2);
  		msg.setDuration(duration);
  		msg.setPlayTone(playTone);
  		msg.setTtsChunks(ttsChunks);
  		msg.setSoftButtons(softButtons);
  
  		return msg;
  	}
  
  	
  	
  	public static Alert buildAlert(String ttsText, Boolean playTone,
  			Integer correlationID) {
  		Vector<TTSChunk> chunks = TTSChunkFactory
  				.createSimpleTTSChunks(ttsText);
  		Alert msg = buildAlert(chunks, null, null, playTone, null,
  				correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(String alertText1, String alertText2,
  			Integer duration, Integer correlationID) {
  		Alert msg = buildAlert((Vector<TTSChunk>) null, alertText1, alertText2,
  				null, duration, correlationID);
  		return msg;
  	}
  	
  	public static Alert buildAlert(String ttsText, String alertText1,
  			String alertText2, Boolean playTone, Integer duration,
  			Integer correlationID) {
  