code: public static Map<String, Field> getDeepDeclaredFieldMap(Class c)
      {
          Map<String, Field> fieldMap = new HashMap<>();
          Collection<Field> fields = getDeepDeclaredFields(c);
          for (Field field : fields)
          {
              String fieldName = field.getName();
              if (fieldMap.containsKey(fieldName))
              {   // Can happen when parent and child class both have private field with same name
                  fieldMap.put(field.getDeclaringClass().getName() + '.' + fieldName, field);
              }
              else
              {
                  fieldMap.put(fieldName, field);
              }
          }
  
          return fieldMap;
      }
docs: Return all Fields from a class (including inherited), mapped by
  String field name to java.lang.reflect.Field.
  @param c Class whose fields are being fetched.
  @return Map of all fields on the Class, keyed by String field
  name to java.lang.reflect.Field.