@SuppressWarnings({ "unchecked", "rawtypes" })
	private void init(Object object, Parameterized parameterized, ResourceBundle bundle, JCommander jCommander)
	{
		m_object = object;
		m_parameterized = parameterized;
		m_bundle = bundle;
		if (m_bundle == null)
		{
			m_bundle = findResourceBundle(object);
		}
		m_jCommander = jCommander;

		if (m_parameterAnnotation != null)
		{
			String description;
			if (Enum.class.isAssignableFrom(parameterized.getType()) && m_parameterAnnotation.description().isEmpty())
			{
				description = "Options: " + EnumSet.allOf((Class<? extends Enum>) parameterized.getType());
			}
			else
			{
				description = m_parameterAnnotation.description();
			}
			initDescription(description, m_parameterAnnotation.descriptionKey(), m_parameterAnnotation.names());
		}
		else
			if (m_dynamicParameterAnnotation != null)
			{
				initDescription(m_dynamicParameterAnnotation.description(), m_dynamicParameterAnnotation.descriptionKey(), m_dynamicParameterAnnotation.names());
			}
			else
			{
				throw new AssertionError("Shound never happen");
			}

		try
		{
			m_default = parameterized.get(object);
		}
		catch (Exception e)
		{
		}

		//
		// Validate default values, if any and if applicable
		//
		if (m_default != null)
		{
			if (m_parameterAnnotation != null)
			{
				validateDefaultValues(m_parameterAnnotation.names());
			}
		}
	}