code: private void introspectFields(Class type, Set introspectedClasses) {
  		if (type == null || Object.class.equals(type) || type.isInterface() || introspectedClasses.contains(type)) {
  			return;
  		}
  		introspectedClasses.add(type);
  		introspectFields(type.getSuperclass(), introspectedClasses);
  		Field[] fields = type.getDeclaredFields();
  		for (int i = 0; i < fields.length; i++) {
  			if (!Modifier.isStatic(fields[i].getModifiers())) {
  				readAccessors.put(fields[i].getName(), fields[i]);
  				if (!Modifier.isFinal(fields[i].getModifiers())) {
  					writeAccessors.put(fields[i].getName(), fields[i]);
  				}
  			}
  		}
  	}
docs: Introspect fields of a class. This excludes static fields and handles
  final fields as readOnly.
  
  @param type the class to inspect.
  @param introspectedClasses a set of already inspected classes.