// Path: quantity/src/main/java/systems/uom/quantity/Acidity.java
// public interface Acidity extends Quantity<Acidity> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Concentration.java
// public interface Concentration<Q extends Quantity<Q>> extends Quantity<Concentration<Q>> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Drag.java
// public interface Drag extends Quantity<Drag> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Information.java
// public interface Information extends Quantity<Information> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/InformationRate.java
// public interface InformationRate extends Quantity<InformationRate> {
// }


import static javax.measure.MetricPrefix.*;
import static tech.units.indriya.AbstractUnit.ONE;
import si.uom.quantity.*;
import systems.uom.quantity.Acidity;
import systems.uom.quantity.Concentration;
import systems.uom.quantity.Drag;
import systems.uom.quantity.Information;
import systems.uom.quantity.InformationRate;
import si.uom.quantity.Level;
import si.uom.SI;
import tech.units.indriya.*;
import tech.units.indriya.format.SimpleUnitFormat;
import tech.units.indriya.function.LogConverter;
import tech.units.indriya.function.MultiplyConverter;
import tech.units.indriya.unit.AlternateUnit;
import tech.units.indriya.unit.ProductUnit;
import tech.units.indriya.unit.TransformedUnit;
import tech.units.indriya.unit.Units;
import javax.measure.Quantity;
import javax.measure.Unit;
import javax.measure.quantity.*;
    // public static final Unit LIMIT_OF_FLOCCULATION = UNDEFINED;
    // public static final Unit D_ANTIGEN = UNDEFINED;
    // public static final Unit FIBRINOGEN_EQUIVALENT = UNDEFINED;
    // public static final Unit ELISA = UNDEFINED;
    // public static final Unit EHRLICH = UNDEFINED;
    // public static final Unit CHEMICAL = UNDEFINED;

    /////////////////////////////////
    // LEVELS UNITS: UCUM 4.5 §46 //
    ////////////////////////////////
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static final Unit<Level<Dimensionless>> NEPER = (Unit) addUnit(
	    ONE.transform(new LogConverter(Math.E)));
    /**
     * A logarithmic unit used to describe a power {@link Level} ratio (standard
     * name <code>dB</code>).
     */
    // public static final Unit<Level<Power>> DECIBEL = addUnit(NEPER
    // .transform(new LogConverter(10).inverse().concatenate(
    // RationalConverter.of(1d, 10d))));

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static final Unit<Level<Dimensionless>> BEL = (Unit) addUnit(
	    ONE.transform(new LogConverter(10)));

    @SuppressWarnings("unchecked")
    public static final Unit<Level<Pressure>> BEL_SOUND = addUnit(
	    PASCAL.divide(1E5).multiply(2).transform(new LogConverter(10)).multiply(2).asType(Level.class));

    @SuppressWarnings("unchecked")
// Path: quantity/src/main/java/systems/uom/quantity/Acidity.java
// public interface Acidity extends Quantity<Acidity> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Concentration.java
// public interface Concentration<Q extends Quantity<Q>> extends Quantity<Concentration<Q>> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Drag.java
// public interface Drag extends Quantity<Drag> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/Information.java
// public interface Information extends Quantity<Information> {
// }
// 
// Path: quantity/src/main/java/systems/uom/quantity/InformationRate.java
// public interface InformationRate extends Quantity<InformationRate> {
// }


// Path: ucum/src/main/java/systems/uom/ucum/UCUM.java
import static javax.measure.MetricPrefix.*;
import static tech.units.indriya.AbstractUnit.ONE;
import si.uom.quantity.*;
import systems.uom.quantity.Acidity;
import systems.uom.quantity.Concentration;
import systems.uom.quantity.Drag;
import systems.uom.quantity.Information;
import systems.uom.quantity.InformationRate;
import si.uom.quantity.Level;
import si.uom.SI;
import tech.units.indriya.*;
import tech.units.indriya.format.SimpleUnitFormat;
import tech.units.indriya.function.LogConverter;
import tech.units.indriya.function.MultiplyConverter;
import tech.units.indriya.unit.AlternateUnit;
import tech.units.indriya.unit.ProductUnit;
import tech.units.indriya.unit.TransformedUnit;
import tech.units.indriya.unit.Units;
import javax.measure.Quantity;
import javax.measure.Unit;
import javax.measure.quantity.*;

    // public static final Unit LIMIT_OF_FLOCCULATION = UNDEFINED;
    // public static final Unit D_ANTIGEN = UNDEFINED;
    // public static final Unit FIBRINOGEN_EQUIVALENT = UNDEFINED;
    // public static final Unit ELISA = UNDEFINED;
    // public static final Unit EHRLICH = UNDEFINED;
    // public static final Unit CHEMICAL = UNDEFINED;

    /////////////////////////////////
    // LEVELS UNITS: UCUM 4.5 §46 //
    ////////////////////////////////
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static final Unit<Level<Dimensionless>> NEPER = (Unit) addUnit(
	    ONE.transform(new LogConverter(Math.E)));
    /**
     * A logarithmic unit used to describe a power {@link Level} ratio (standard
     * name <code>dB</code>).
     */
    // public static final Unit<Level<Power>> DECIBEL = addUnit(NEPER
    // .transform(new LogConverter(10).inverse().concatenate(
    // RationalConverter.of(1d, 10d))));

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static final Unit<Level<Dimensionless>> BEL = (Unit) addUnit(
	    ONE.transform(new LogConverter(10)));

    @SuppressWarnings("unchecked")
    public static final Unit<Level<Pressure>> BEL_SOUND = addUnit(
	    PASCAL.divide(1E5).multiply(2).transform(new LogConverter(10)).multiply(2).asType(Level.class));

    @SuppressWarnings("unchecked")
    public static final Unit<Level<ElectricPotential>> BEL_VOLT = addUnit(