code: public Collection<Object> getAllFacts(Solution_ solution) {
          Collection<Object> facts = new ArrayList<>();
          // Adds both entities and facts
          Arrays.asList(entityMemberAccessorMap, problemFactMemberAccessorMap)
                  .forEach(map -> map.forEach((key, memberAccessor) -> {
              Object object = extractMemberObject(memberAccessor, solution);
              if (object != null) {
                  facts.add(object);
              }
          }));
          entityCollectionMemberAccessorMap.forEach(
                  (key, memberAccessor) -> facts.addAll(extractMemberCollectionOrArray(memberAccessor, solution, false)));
          problemFactCollectionMemberAccessorMap.forEach(
                  (key, memberAccessor) -> facts.addAll(extractMemberCollectionOrArray(memberAccessor, solution, true)));
          return facts;
      }
docs: ************************************************************************