/**
 * This class file was automatically generated by jASN1 v1.8.0 (http://www.openmuc.org)
 */

package org.onosproject.xran.codecs.api;

import java.io.IOException;
import java.io.EOFException;
import java.io.InputStream;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.io.Serializable;
import org.onosproject.xran.codecs.ber.*;
import org.onosproject.xran.codecs.ber.types.*;
import org.onosproject.xran.codecs.ber.types.string.*;


public class ReconfIndReason extends BerEnum {

	private static final long serialVersionUID = 1L;

	public ReconfIndReason() {
	}

	public ReconfIndReason(byte[] code) {
		super(code);
	}

	public ReconfIndReason(BigInteger value) {
		super(value);
	}

	public ReconfIndReason(long value) {
		super(value);
	}

}
