code: @SuppressWarnings("unchecked")
  	private <CLASS> CLASS get(ThirdPartyParseable obj, String property, Class <? extends CLASS> propertyReturnClass){
  		//System.out.println(clazz.getName()+" object="+obj.getClass());
  		try {
  		        final Class<?>[] nullClasses = null;
  			Method meth = obj.getClass().getMethod("get"+Character.toUpperCase(property.charAt(0))+property.substring(1), nullClasses);
  			if(propertyReturnClass==String.class){
  				//Object result = new PropertyDescriptor(property,obj.getClass()).getReadMethod().invoke(obj, null);
  				Object result = meth.invoke(obj, (Object[])null);
  				if(!result.getClass().isEnum())return (CLASS)new String(""+result);
  				else return (CLASS)(((Enum<?>)result).ordinal()+"");
  				}
  			return (CLASS)meth.invoke(obj, (Object[])null);
  			}
  		catch(Exception e){throw new RuntimeException(e);}
  		}
docs: /*
  private static int getInt(ThirdPartyParseable obj, String property)
  {
  try{return (Integer)new PropertyDescriptor(property,obj.getClass()).getReadMethod().invoke(obj, null);}
  catch(Exception e){throw new RuntimeException(e);}
  }
  private static void setInt(ThirdPartyParseable obj, String property, Integer value)
  {
  try{new PropertyDescriptor(property,obj.getClass()).getWriteMethod().invoke(obj,value);}
  catch(Exception e){throw new RuntimeException(e);}
  }