code: @Override
      public OrthologizedKam orthologize(Kam kam, KAMStore kAMStore,
              SpeciesDialect dialect) {
          Kam copy = copy(kam);
  
          Map<KamNode, KamNode> ortho = orthologousNodes(copy, kAMStore, dialect);
  
          EdgeFilter inferf = copy.createEdgeFilter();
          final RelationshipTypeFilterCriteria c =
                  new RelationshipTypeFilterCriteria();
          c.getValues().addAll(Arrays.asList(INFERRED_ORTHOLOGIZED_EDGES));
          inferf.add(c);
  
          final Collection<KamNode> speciesNodes = ortho.values();
          final Set<KamNode> species = new LinkedHashSet<KamNode>(
                  speciesNodes.size());
          species.addAll(speciesNodes);
  
          replaceOrthologousEdges(copy, ortho);
          removeOrthologousNodes(copy, ortho);
          Pair<Map<Integer, TermParameter>, Map<Integer, TermParameter>> tpm =
                  inferOrthologs(copy, kAMStore, dialect, inferf, species, ortho);
  
          Map<Integer, TermParameter> ntp = tpm.getFirst();
          Map<Integer, TermParameter> etp = tpm.getSecond();
  
          return new OrthologizedKam(copy, dialect, ntp, etp, ortho);
      }
docs: {@inheritDoc}