code: @Override
      public String getMethodNameForReference(final ForeignKey foreignKey) {
          final Column c = foreignKey.getColumnReferences().get(0).getForeignKeyColumn();
          // check if only one-column fk
          if (foreignKey.getColumnReferences().size() == 1) {
              return getMethodNameForColumn(c) + getClassNameForTable(c.getReferencedColumn().getParent());
          }
  
          final StringBuilder nameBuilder = new StringBuilder();
          final List<String> words = new ArrayList<>(Arrays.asList(foreignKey.getName()
                  .toLowerCase()
                  .replaceAll("(^[0-9]+|[^a-z0-9_-])", "") // Delete every not-alphanumeric or _/- character and numbers at beginning
                  .split("_")));
          words.removeAll(Arrays.asList("fk", "", null)); // removes FK_ prefix and empty entries
          final List<String> tableWords = new ArrayList<>(Arrays.asList(c.getParent().getName()
                  .toLowerCase()
                  .replaceAll("(^[0-9]+|[^a-z0-9_-])", "") // Delete every not-alphanumeric or _/- character and numbers at beginning
                  .split("_")));
          words.removeAll(tableWords);
          nameBuilder.append(words.get(0));
          for (int i = 1; i < words.size(); i++) {
              String word = words.get(i);
  
              nameBuilder.append(word.substring(0, 1).toUpperCase());
              nameBuilder.append(word.substring(1));
          }
          return nameBuilder.toString();
      }
docs: Generates an appropriate method name for a foreign key
  @param foreignKey The database foreign key
  @return The generated name