docs: private static final Function<ParameterPair, Double> buildDefaultDistanceFunction() {
      return new Function<ParameterPair, Double>() {
        @Override
        public Double apply(ParameterPair pair) {
          if (pair.formal().isNullLiteral() || pair.actual().isNullLiteral()) {
            return 0.0;
          }
  
          if (!pair.formal().isUnknownName() && !pair.actual().isUnknownName()) {
            String normalizedSource =
                NamingConventions.convertToLowerUnderscore(pair.formal().name());
            String normalizedTarget =
                NamingConventions.convertToLowerUnderscore(pair.actual().name());
            return NeedlemanWunschEditDistance.getNormalizedEditDistance(
                /*source=*/ normalizedSource,
                /*target=*/ normalizedTarget,
                /*caseSensitive=*/ false,
                /*changeCost=*/ 8,
                /*openGapCost=*/ 8,
                /*continueGapCost=*/ 1);
          }
  
          return pair.formal().index() == pair.actual().index() ? 0.0 : Double.POSITIVE_INFINITY;
        }
      };
    }