fluid-api/src/main/java/com/fluidbpm/program/api/util/cache/CacheUtil.java
@SuppressWarnings("unchecked")
	private CachedFieldValue getCacheFieldValueFromObject(Object objWithKeyParam)
	{
		if(objWithKeyParam == null)
		{
			return null;
		}

		//Get Word...
		Method methodGetWord = CacheUtil.getMethod(
				objWithKeyParam.getClass(),
				CustomCode.IWord.METHOD_getWord);

		//Get Value...
		Method methodGetValue = CacheUtil.getMethod(
				objWithKeyParam.getClass(),
				CustomCode.ADataType.METHOD_getValue);

		//Word...
		Object getWordObj = CacheUtil.invoke(methodGetWord, objWithKeyParam);
		String getWordVal = null;
		if(getWordObj instanceof String)
		{
			getWordVal = (String)getWordObj;
		}

		//Value...
		Object getValueObj;
		if(FlowJobType.MULTIPLE_CHOICE.equals(getWordVal))
		{
			MultiChoice multiChoice = new MultiChoice();

			//Available Choices...
			Method methodAvailableChoices = getMethod(
					objWithKeyParam.getClass(),
					CustomCode.MultipleChoice.METHOD_getAvailableChoices);

			Object availChoicesObj =
					CacheUtil.invoke(methodAvailableChoices, objWithKeyParam);

			if(availChoicesObj instanceof List)
			{
				multiChoice.setAvailableMultiChoices((List)availChoicesObj);
			}

			//Selected...
			Method methodSelectedChoices = getMethod(
					objWithKeyParam.getClass(),
					CustomCode.MultipleChoice.METHOD_getSelectedChoices);

			Object selectedChoicesObj =
					invoke(methodSelectedChoices, objWithKeyParam);

			if(selectedChoicesObj instanceof List)
			{
				multiChoice.setSelectedMultiChoices((List)selectedChoicesObj);
			}

			getValueObj = multiChoice;
		}
		else
		{
			getValueObj = CacheUtil.invoke(methodGetValue, objWithKeyParam);
		}

		if(getValueObj == null)
		{
			return null;
		}

		if(getWordVal == null)
		{
			throw new FluidCacheException(
					"Get Word value is 'null'. Not allowed.");
		}

		CachedFieldValue returnVal = new CachedFieldValue();

		returnVal.dataType = getWordVal;
		returnVal.cachedFieldValue = getValueObj;

		return returnVal;
	}
@SuppressWarnings("unchecked")
	private CachedFieldValue getCacheFieldValueFromObject(Object objWithKeyParam)
	{
		if(objWithKeyParam == null)
		{
			return null;
		}

		//Get Word...
		Method methodGetWord = CacheUtil.getMethod(
				objWithKeyParam.getClass(),
				CustomCode.IWord.METHOD_getWord);

		//Get Value...
		Method methodGetValue = CacheUtil.getMethod(
				objWithKeyParam.getClass(),
				CustomCode.ADataType.METHOD_getValue);

		//Word...
		Object getWordObj = CacheUtil.invoke(methodGetWord, objWithKeyParam);
		String getWordVal = null;
		if(getWordObj instanceof String)
		{
			getWordVal = (String)getWordObj;
		}

		//Value...
		Object getValueObj;
		if(FlowJobType.MULTIPLE_CHOICE.equals(getWordVal))
		{
			MultiChoice multiChoice = new MultiChoice();

			//Available Choices...
			Method methodAvailableChoices = getMethod(
					objWithKeyParam.getClass(),
					CustomCode.MultipleChoice.METHOD_getAvailableChoices);

			Object availChoicesObj =
					CacheUtil.invoke(methodAvailableChoices, objWithKeyParam);

			if(availChoicesObj instanceof List)
			{
				multiChoice.setAvailableMultiChoices((List)availChoicesObj);
			}

			//Selected...
			Method methodSelectedChoices = getMethod(
					objWithKeyParam.getClass(),
					CustomCode.MultipleChoice.METHOD_getSelectedChoices);

			Object selectedChoicesObj =
					invoke(methodSelectedChoices, objWithKeyParam);

			if(selectedChoicesObj instanceof List)
			{
				multiChoice.setSelectedMultiChoices((List)selectedChoicesObj);
			}

			getValueObj = multiChoice;
		}
		else
		{
			getValueObj = CacheUtil.invoke(methodGetValue, objWithKeyParam);
		}

		if(getValueObj == null)
		{
			return null;
		}

		if(getWordVal == null)
		{
			throw new FluidCacheException(
					"Get Word value is 'null'. Not allowed.");
		}

		CachedFieldValue returnVal = new CachedFieldValue();

		returnVal.dataType = getWordVal;
		returnVal.cachedFieldValue = getValueObj;

		return returnVal;
	}
Converts the {@code objWithKeyParam} Object to {@code CachedFieldValue}.

@param objWithKeyParam The retrieved cached object.

@return CachedFieldValue from {@code objWithKeyParam}.