public class Introspectors {
  static String propertyName(String name) {
    String property = name.substring(3);
    return Character.toLowerCase(property.charAt(0)) + property.substring(1);
  }
  
  static Object getValueByReflection(Object object, Method method) {
    // TODO
  }
  
  public static Map<String,Object> introspect(Object object) {
    HashMap<String, Object> map = new HashMap<>();
    for(Method method: object.getClass().getMethods()) {
      String name = method.getName();
      if (method.getParameterCount() == 0 && name.startsWith("get")) {
        String propertyName = propertyName(name);
        map.put(propertyName, getValueByReflection(object, method));
      }
    }
    return map;
  }

  public static void main(String[] args) {
    java.awt.geom.Point2D point = new java.awt.geom.Point2D.Double(1, 2);
    Map<String, Object> map = Introspectors.introspect(point);
    System.out.println(map);
  }
}
