// Path: core/src/main/java/com/justyoyo/contrast/FormatException.java
// public final class FormatException extends ReaderException {
// 
//   private static final FormatException instance = new FormatException();
// 
//   private FormatException() {
//     // do nothing
//   }
// 
//   public static FormatException getFormatInstance() {
//     return instance;
//   }
// 
// }


import com.justyoyo.contrast.FormatException;
import java.util.HashMap;
import java.util.Map;
    }
  }

  private final int[] values;
  private final String[] otherEncodingNames;

  CharacterSetECI(int value) {
    this(new int[] {value});
  }
  
  CharacterSetECI(int value, String... otherEncodingNames) {
    this.values = new int[] {value};
    this.otherEncodingNames = otherEncodingNames;
  }

  CharacterSetECI(int[] values, String... otherEncodingNames) {
    this.values = values;
    this.otherEncodingNames = otherEncodingNames;
  }

  public int getValue() {
    return values[0];
  }

  /**
   * @param value character set ECI value
   * @return CharacterSetECI representing ECI of given value, or null if it is legal but
   *   unsupported
   * @throws IllegalArgumentException if ECI value is invalid
   */
// Path: core/src/main/java/com/justyoyo/contrast/FormatException.java
// public final class FormatException extends ReaderException {
// 
//   private static final FormatException instance = new FormatException();
// 
//   private FormatException() {
//     // do nothing
//   }
// 
//   public static FormatException getFormatInstance() {
//     return instance;
//   }
// 
// }


// Path: core/src/main/java/com/justyoyo/contrast/common/CharacterSetECI.java
import com.justyoyo.contrast.FormatException;
import java.util.HashMap;
import java.util.Map;

    }
  }

  private final int[] values;
  private final String[] otherEncodingNames;

  CharacterSetECI(int value) {
    this(new int[] {value});
  }
  
  CharacterSetECI(int value, String... otherEncodingNames) {
    this.values = new int[] {value};
    this.otherEncodingNames = otherEncodingNames;
  }

  CharacterSetECI(int[] values, String... otherEncodingNames) {
    this.values = values;
    this.otherEncodingNames = otherEncodingNames;
  }

  public int getValue() {
    return values[0];
  }

  /**
   * @param value character set ECI value
   * @return CharacterSetECI representing ECI of given value, or null if it is legal but
   *   unsupported
   * @throws IllegalArgumentException if ECI value is invalid
   */
  public static CharacterSetECI getCharacterSetECIByValue(int value) throws FormatException {