// Path: src/main/java/uk/org/okapibarcode/util/Arrays.java
// public static int positionOf(char value, char[] array) {
//     for (int i = 0; i < array.length; i++) {
//         if (value == array[i]) {
//             return i;
//         }
//     }
//     throw new OkapiException("Unable to find character '" + value + "' in character array.");
// }
// 
// Path: src/main/java/uk/org/okapibarcode/util/Strings.java
// public static void binaryAppend(StringBuilder s, int value, int digits) {
//     int start = 0x01 << (digits - 1);
//     for (int i = 0; i < digits; i++) {
//         if ((value & (start >> i)) == 0) {
//             s.append('0');
//         } else {
//             s.append('1');
//         }
//     }
// }
// 
// Path: src/main/java/uk/org/okapibarcode/backend/DataBar14.java
// public enum Mode {
//     /** DataBar-14 */
//     LINEAR,
//     /** DataBar-14 Omnidirectional */
//     OMNI,
//     /** DataBar-14 Omnidirectional Stacked */
//     STACKED
// }


import static uk.org.okapibarcode.util.Arrays.positionOf;
import static uk.org.okapibarcode.util.Strings.binaryAppend;
import java.awt.geom.Rectangle2D;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import uk.org.okapibarcode.backend.DataBar14.Mode;
            case 1:
                infoLine("0");
                break;
            case 2:
                infoLine("10");
                break;
            case 3:
                infoLine("11");
                break;
        }

        binary_string = new StringBuilder();

        if (encoding_method == 1) {
            binary_string.append('0');
        }

        if (encoding_method == 2) {
            /* Encoding Method field "10" - date and lot number */

            binary_string.append("10");

            if (inputData[1] == '0') {
                /* No date data */
                binary_string.append("11");
            } else {
                /* Production Date (11) or Expiration Date (17) */
                group_val = ((10 * (inputData[2] - '0')) + (inputData[3] - '0')) * 384;
                group_val += (((10 * (inputData[4] - '0')) + (inputData[5] - '0')) - 1) * 32;
                group_val += (10 * (inputData[6] - '0')) + (inputData[7] - '0');
// Path: src/main/java/uk/org/okapibarcode/util/Arrays.java
// public static int positionOf(char value, char[] array) {
//     for (int i = 0; i < array.length; i++) {
//         if (value == array[i]) {
//             return i;
//         }
//     }
//     throw new OkapiException("Unable to find character '" + value + "' in character array.");
// }
// 
// Path: src/main/java/uk/org/okapibarcode/util/Strings.java
// public static void binaryAppend(StringBuilder s, int value, int digits) {
//     int start = 0x01 << (digits - 1);
//     for (int i = 0; i < digits; i++) {
//         if ((value & (start >> i)) == 0) {
//             s.append('0');
//         } else {
//             s.append('1');
//         }
//     }
// }
// 
// Path: src/main/java/uk/org/okapibarcode/backend/DataBar14.java
// public enum Mode {
//     /** DataBar-14 */
//     LINEAR,
//     /** DataBar-14 Omnidirectional */
//     OMNI,
//     /** DataBar-14 Omnidirectional Stacked */
//     STACKED
// }


// Path: src/main/java/uk/org/okapibarcode/backend/Composite.java
import static uk.org.okapibarcode.util.Arrays.positionOf;
import static uk.org.okapibarcode.util.Strings.binaryAppend;
import java.awt.geom.Rectangle2D;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import uk.org.okapibarcode.backend.DataBar14.Mode;

            case 1:
                infoLine("0");
                break;
            case 2:
                infoLine("10");
                break;
            case 3:
                infoLine("11");
                break;
        }

        binary_string = new StringBuilder();

        if (encoding_method == 1) {
            binary_string.append('0');
        }

        if (encoding_method == 2) {
            /* Encoding Method field "10" - date and lot number */

            binary_string.append("10");

            if (inputData[1] == '0') {
                /* No date data */
                binary_string.append("11");
            } else {
                /* Production Date (11) or Expiration Date (17) */
                group_val = ((10 * (inputData[2] - '0')) + (inputData[3] - '0')) * 384;
                group_val += (((10 * (inputData[4] - '0')) + (inputData[5] - '0')) - 1) * 32;
                group_val += (10 * (inputData[6] - '0')) + (inputData[7] - '0');
                binaryAppend(binary_string, group_val, 16);