public static void main(final String[] args) {
    //
    // Start ADempiere
    AdempiereToolsHelper.getInstance().startupMinimal();
    LogManager.setLevel(Level.DEBUG);
    Ini.setProperty(Ini.P_LOGMIGRATIONSCRIPT, false); // metas: don't log migration scripts

    final TableAndColumnInfoRepository repository = new TableAndColumnInfoRepository();

    //
    // Get AD_Reference_ID parameter
    if (args.length < 1) {
      throw new AdempiereException("Provide AD_Reference_ID parameter");
    }
    final String adReferenceIdStr = args[0];
    Check.assumeNotEmpty(adReferenceIdStr, "Valid AD_Reference_ID parameter: {}", adReferenceIdStr);
    final int adReferenceId = Integer.parseInt(adReferenceIdStr.trim());

    //
    // Get the AD_Reference list info
    final ListInfo listInfo = repository.getListInfo(adReferenceId).orNull();
    if (listInfo == null) {
      throw new AdempiereException("No list info found for AD_Reference_ID=" + adReferenceId);
    }

    //
    // Generate the Java code
    final String javacode =
        ADRefListGenerator.newInstance()
            .setColumnName("MyColumnName")
            .setListInfo(listInfo)
            .generateConstants();

    //
    // Output the result
    System.out.println("Generated Java code:");
    System.out.println(
        "--------------------------------------------------------------------------------------------");
    System.out.println(javacode);
    System.out.println(
        "--------------------------------------------------------------------------------------------");
  }