code: protected HashMap getMethodMap(Class cl)
      {
          HashMap methodMap = new HashMap();
  
          for (; cl != null; cl = cl.getSuperclass()) {
              Method[] methods = cl.getDeclaredMethods();
  
              for (int i = 0; i < methods.length; i++) {
                  Method method = methods[i];
  
                  if (Modifier.isStatic(method.getModifiers()))
                      continue;
  
                  String name = method.getName();
  
                  if (!name.startsWith("set"))
                      continue;
  
                  Class[] paramTypes = method.getParameterTypes();
                  if (paramTypes.length != 1)
                      continue;
  
                  if (!method.getReturnType().equals(void.class))
                      continue;
  
                  if (findGetter(methods, name, paramTypes[0]) == null)
                      continue;
  
                  // XXX: could parameterize the handler to only deal with public
                  try {
                      method.setAccessible(true);
                  } catch (Throwable e) {
                      e.printStackTrace();
                  }
  
                  name = name.substring(3);
  
                  int j = 0;
                  for (; j < name.length() && Character.isUpperCase(name.charAt(j)); j++) {
                  }
  
                  if (j == 1)
                      name = name.substring(0, j).toLowerCase(Locale.ENGLISH) + name.substring(j);
                  else if (j > 1)
                      name = name.substring(0, j - 1).toLowerCase(Locale.ENGLISH) + name.substring(j - 1);
  
                  methodMap.put(name, method);
              }
          }
  
          return methodMap;
      }
docs: Creates a map of the classes fields.