code: public static Object invokeGetter(Object object, String getterName, Object[] args)
              throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
          int index = getterName.indexOf('.');
          if (index > 0) {
              String getterName2 = getterName.substring(0, index);
              Object o = invokeGetter(object, getterName2);
              return invokeGetter(o, getterName.substring(index + 1), args);
          } else {
              if (!getterName.startsWith("get") && !getterName.startsWith("is")) {
                  getterName = "get" + getterName.substring(0, 1).toUpperCase(Locale.US) + getterName.substring(1);
              }
              return invokeMethod(object, getterName, args);
          }
      }
docs: Gets an Object property from a bean.
  
  @param object the bean
  @param getterName the property name or getter method name
  @param args use this arguments
  @return the property value (as an Object)
  @throws NoSuchMethodException the no such method exception
  @throws IllegalAccessException the illegal access exception
  @throws InvocationTargetException the invocation target exception