private Method getNonPrivateAccessorMethodForField(String accessorPrefix, Field field) {
		assert accessorPrefix != null;
		assert field != null;
		final String methodName = buildMethodName(accessorPrefix, field.getName());
		assert methodName != null;
		final Class<?>[] params = accessorPrefix.equals("set") ? new Class<?>[] { field.getType() } : new Class<?>[0];
		try {
			final Method method = this.analyzedClass.getDeclaredMethod(methodName, params);
			final int modifier = method.getModifiers();
			if (!Modifier.isPrivate(modifier) && !Modifier.isStatic(modifier)) {
				return method;
			}
		} catch (NoSuchMethodException ex) {
			// search in super-class
			final Class<?> superClass = getSuperClass();
			if (superClass != null) {
				final JavaClassAnalyzer superClassAnalyzer = new JavaClassAnalyzer(superClass);
				return superClassAnalyzer.getNonPrivateAccessorMethodForField(accessorPrefix, field);
			}
		}
		return null;
	}