code: public List<Proposition> traverseLinks(Link[] links,
              Proposition proposition,
              Map<Proposition, Set<Proposition>> forwardDerivations,
              Map<Proposition, Set<Proposition>> backwardDerivations,
              Map<UniqueId, Proposition> references,
              KnowledgeSourceCache ksCache) {
          LinkedList<Proposition> result = new LinkedList<>();
          Logger logger = Util.logger();
          result.add(proposition);
          if (links != null) {
              int num = 1;
              for (Link link : links) {
                  int j = 0;
                  while (j < num) {
                      Proposition prop = result.remove();
                      Collection<Proposition> c = link.traverse(prop,
                              forwardDerivations, backwardDerivations,
                              references, ksCache, this.cache);
                      result.addAll(c);
                      j++;
                  }
                  if (logger.isLoggable(Level.FINEST)) {
                      logger.log(Level.FINEST, "{0} traversed to {1} with {2}",
                              new Object[]{getClass().getName(), result, link});
                  }
                  num = result.size();
                  this.cache.clear();
              }
          }
          if (logger.isLoggable(Level.FINER)) {
              logger.log(Level.FINER, "{0} traversed to {1}",
                      new Object[]{getClass().getName(), result});
          }
          return result;
      }
docs: Traverses links from a proposition to a list of propositions.
  
  @param links the {@link Link}s to traverse. If <code>null</code> or an
  empty array, then the supplied proposition is returned.
  @param proposition the {@link Proposition} from which to start. Cannot be
  <code>null</code>.
  @param forwardDerivations map of propositions from raw data toward
  derived propositions.
  @param backwardDerivations map of propositions from derived propositions
  toward raw data.
  @param references a map of unique id to the corresponding proposition for
  propositions that are referred to by other propositions.
  @param knowledgeSource the {@link KnowledgeSource}.
  @return the list of {@link Propositions} at the end of the traversals.
  @throws KnowledgeSourceReadException if an error occurred reading from
  the knowledge source.