// Path: fixb/src/main/java/org/fixb/FixException.java
// public class FixException extends RuntimeException {
//     private static final long serialVersionUID = 1;
// 
//     /**
//      * @param tag the field tag that has not been found
//      * @param fixMessage the FIX message that does not contain the tag
//      * @return an instance of FixException for a field-not-found case.
//      */
//     public static FixException fieldNotFound(int tag, String fixMessage) {
//         return new FixException("Field [" + tag + "] was not found in message: " + fixMessage);
//     }
// 
//     /**
//      * @param message the exception message
//      * @param cause the exception cause
//      */
//     public FixException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * @param cause the exception cause
//      */
//     public FixException(final Throwable cause) {
//         super(cause.getMessage(), cause);
//     }
// 
//     /**
//      * @param message the exception message
//      */
//     public FixException(final String message) {
//         super(message);
//     }
// }


import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
import org.fixb.FixException;
import org.fixb.annotations.FixValue;
import java.lang.reflect.Field;
package org.fixb.meta;



/**
 * A metadata for a FIX enum binding.
 *
 * @author vladyslav.yatsenko
 * @see FixEnumDictionary
 */
public class FixEnumMeta<T extends Enum<T>> {
    private final Class<T> enumClass;
    private final BiMap<String, T> enumFixValues;

    public static <T extends Enum<T>> FixEnumMeta<T> forClass(Class<T> type) {
        if (!type.isEnum()) {
// Path: fixb/src/main/java/org/fixb/FixException.java
// public class FixException extends RuntimeException {
//     private static final long serialVersionUID = 1;
// 
//     /**
//      * @param tag the field tag that has not been found
//      * @param fixMessage the FIX message that does not contain the tag
//      * @return an instance of FixException for a field-not-found case.
//      */
//     public static FixException fieldNotFound(int tag, String fixMessage) {
//         return new FixException("Field [" + tag + "] was not found in message: " + fixMessage);
//     }
// 
//     /**
//      * @param message the exception message
//      * @param cause the exception cause
//      */
//     public FixException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * @param cause the exception cause
//      */
//     public FixException(final Throwable cause) {
//         super(cause.getMessage(), cause);
//     }
// 
//     /**
//      * @param message the exception message
//      */
//     public FixException(final String message) {
//         super(message);
//     }
// }


// Path: fixb/src/main/java/org/fixb/meta/FixEnumMeta.java
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
import org.fixb.FixException;
import org.fixb.annotations.FixValue;
import java.lang.reflect.Field;

package org.fixb.meta;



/**
 * A metadata for a FIX enum binding.
 *
 * @author vladyslav.yatsenko
 * @see FixEnumDictionary
 */
public class FixEnumMeta<T extends Enum<T>> {
    private final Class<T> enumClass;
    private final BiMap<String, T> enumFixValues;

    public static <T extends Enum<T>> FixEnumMeta<T> forClass(Class<T> type) {
        if (!type.isEnum()) {
            throw new FixException("Expected an enum class, but got [" + type.getName() + "].");