@Override
		protected void appendFieldsIn(final Class<?> clazz) {
			if (clazz.isArray()) {
				super.appendFieldsIn(clazz);
				return;
			}

			if (includedNames.length == 0) {
				super.appendFieldsIn(clazz);
				return;
			}

			Field[] fields = clazz.getDeclaredFields();
			AccessibleObject.setAccessible(fields, true);
			Map<String, Field> fieldsByName =
				Arrays.stream(fields).collect(Collectors.toMap(f -> f.getName(), f -> f));
			for (String name : includedNames) {

				Field field = fieldsByName.get(name);
				if (field == null) {
					continue;
				}

				if (accept(field)) {
					try {
						// Field.get(Object) creates wrappers objects for primitive types.
						Object fieldValue = this.getValue(field);
						if (!isExcludeNullValues() || fieldValue != null) {
							this.append(name, fieldValue,
								!field.isAnnotationPresent(ToStringSummary.class));
						}
					}
					catch (IllegalAccessException ex) {
						throw new InternalError(
							"Unexpected IllegalAccessException: " + ex.getMessage());
					}
				}
			}
		}
Creates a Json string representation of the given object and all of its fields except for
those in the given exclusion list
@param o the object
@param excludedFields the excluded field names
@return the string
Ghidra/Framework/Generic/src/main/java/generic/json/Json.java