import java.util.*;
import java.util.zip.*;
import java.util.List;
import java.util.regex.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.concurrent.locks.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.table.*;
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.lang.ref.*;
import java.lang.management.*;
import java.security.*;
import java.security.spec.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.math.*;
import static x30_pkg.x30_util.DynamicObject;
import java.nio.file.Path;
import java.text.*;
import java.text.NumberFormat;
import java.nio.charset.Charset;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
class main {
static class HCRUD_Concepts extends HCRUD_Data {
Concepts cc = db_mainConcepts();
Class cClass;
List> onCreateOrUpdate = new ArrayList();
List> onCreate = new ArrayList();
IVF2> afterUpdate; // parameter 2: old values
Map filters; // fields to filter by/add to new objects
Map ciFilters; // case-insensitive filters
IF1, Collection> customFilter;
ValueConverterForField valueConverter;
boolean referencesBlockDeletion = false;
boolean trimAllSingleLineValues = false;
Set fieldsToHideInCreationForm;
boolean lockDB = false; // lock DB while updating object
boolean verbose = false;
boolean dropEmptyListValues = true;
boolean lsMagic = false;
boolean convertConceptValuesToRefs = false;
A currentConcept; // while editing
boolean useDynamicComboBoxes = false; // dynamically load concepts combo box entries for all fields
IF1 useDynamicComboBoxesForField; // activate dynamic combo boxes for selected fields
int dynamicComboBoxesThreshold = 1000; // if there are this many entries or more, use a dynamic combo box
HCRUD_Concepts(Class cClass) {
this.cClass = cClass;}
HCRUD_Concepts(Concepts cc, Class cClass) {
this.cClass = cClass;
this.cc = cc;}
// XXX - breaking change from just shortName()
transient IF0 itemName;
String itemName() { return itemName != null ? itemName.get() : itemName_base(); }
final String itemName_fallback(IF0 _f) { return _f != null ? _f.get() : itemName_base(); }
String itemName_base() { return humanizeShortName(cClass); }
transient IF0 itemNamePlural;
String itemNamePlural() { return itemNamePlural != null ? itemNamePlural.get() : itemNamePlural_base(); }
final String itemNamePlural_fallback(IF0 _f) { return _f != null ? _f.get() : itemNamePlural_base(); }
String itemNamePlural_base() { return super.itemNamePlural(); }
//LS fields() { ret conceptFields(cClass); }
List itemsForListing() {
return defaultSort(asList(listConcepts()));
}
@Override
List