public final class SavotCoosys extends MarkupComment implements IDSupport {

    // ID attribute
    private String id = null;
    // equinox attribute
    private String equinox = null;
    // epoch attribute
    private String epoch = null;
    // system attribute eq_FK4, eq_FK5, ICRS, ecl_FK4, ecl_FK5, galactic,
    // supergalactic, xy, barycentric, geo_app
    private String system = "eq_FK5"; // default
    // element content
    private String content = null;

    /**
     * Constructor
     */
    public SavotCoosys() {
    }

    /**
     * Set the id attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get the id attribute value
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set the equinox attribute
     * 
     * @param equinox
     *            ([JB]?[0-9]+([.][0-9]*)?)
     */
    public void setEquinox(final String equinox) {
        this.equinox = equinox;
    }

    /**
     * Get the equinox attribute value
     * 
     * @return String
     */
    public String getEquinox() {
        return str(equinox);
    }

    /**
     * Set the epoch attribute
     * 
     * @param epoch
     *            ([JB]?[0-9]+([.][0-9]*)?)
     */
    public void setEpoch(final String epoch) {
        this.epoch = epoch;
    }

    /**
     * Get the epoch attribute value
     * 
     * @return String
     */
    public String getEpoch() {
        return str(epoch);
    }

    /**
     * Set the system attribute
     * 
     * @param system
     *            (eq_FK4, eq_FK5, ICRS, ecl_FK4, ecl_FK5, galactic,
     *            supergalactic, xy, barycentric, geo_app)
     */
    public void setSystem(final String system) {
        this.system = system;
    }

    /**
     * Get the system attribute value
     * 
     * @return String
     */
    public String getSystem() {
        return str(system);
    }

    /**
     * Set element content
     * 
     * @param content
     */
    public void setContent(final String content) {
        this.content = content;
    }

    /**
     * Get element content
     * 
     * @return a String
     */
    public String getContent() {
        return str(content);
    }
} public final class SavotField extends MarkupComment implements IDSupport, NameSupport, RefSupport {

    // ID attribute
    private String id = null;
    // unit attribute
    private String unit = null;
    // datatype attribute
    private String datatype = null;
    // precision attribute
    private String precision = null;
    // width attribute
    private String width = null;
    // xtype attribute @since 1.2
    private String xtype = null;
    // ref attribute
    private String ref = null;
    // name attribute
    private String name = null;
    // ucd attribute
    private String ucd = null;
    // utype attribute
    private String utype = null;
    // arraysize attribute
    private String arraysize = null;
    // type attribute - extension since 1.1
    private String type = null;
    // DESCRIPTION element
    private String description = null;
    // VALUES element
    private SavotValues values = null;
    // LINK elements
    private LinkSet links = null;

    /**
     * Constructor
     */
    public SavotField() {
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get id attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Get unit attribute
     * 
     * @return String
     */
    public String getUnit() {
        return str(unit);
    }

    /**
     * Set unit attribute
     * 
     * @param unit
     */
    public void setUnit(final String unit) {
        this.unit = unit;
    }

    /**
     * Get datatype attribute
     * 
     * @return String
     */
    public String getDataType() {
        return str(datatype);
    }

    /**
     * Set datatype attribute
     * 
     * @param datatype
     *            (boolean, bit, unsignedByte, short, int, long, char,
     *            unicodeChar, float, double, floatComplex, doubleComplex)
     */
    public void setDataType(final String datatype) {
        this.datatype = datatype;
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     *            ([A-Za-z0-9_.,-]*)
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return String
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set precision attribute
     * 
     * @param precision
     *            ([EF]?[1-0][0-9]*)
     */
    public void setPrecision(final String precision) {
        this.precision = precision;
    }

    /**
     * Get precision attribute
     * 
     * @return String
     */
    public String getPrecision() {
        return str(precision);
    }

    /**
     * Set width attribute
     * 
     * @param width
     */
    public void setWidth(final String width) {
        this.width = width;
    }

    /**
     * Get width attribute
     * 
     * @return String
     */
    public String getWidth() {
        return str(width);
    }

    /**
     * Set width attribute
     * 
     * @param width
     */
    public void setWidthValue(final int width) {
        this.width = toStr(width);
    }

    /**
     * Get width attribute
     * 
     * @return String
     */
    public int getWidthValue() {
        return integer(width);
    }

    /**
     * Set xtype attribute
     * 
     * @since VOTable 1.2
     * @param xtype
     */
    public void setXtype(final String xtype) {
        this.xtype = xtype;
    }

    /**
     * Get xtype attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getXtype() {
        return str(xtype);
    }

    /**
     * Set arraysize attribute
     * 
     * @param arraysize
     */
    public void setArraySize(final String arraysize) {
        this.arraysize = arraysize;
    }

    /**
     * Get arraysize attribute
     * 
     * @return String
     */
    public String getArraySize() {
        return str(arraysize);
    }

    /**
     * Set type attribute
     * 
     * @param type
     *            (hidden, no_query, trigger, location) warning : deprecated in
     *            VOTable 1.1
     */
    public void setType(final String type) {
        this.type = type;
    }

    /**
     * Get type attribute
     * 
     * @return String warning : deprecated in VOTable 1.1
     */
    public String getType() {
        return str(type);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Set DESCRIPTION content
     * 
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION content
     * 
     * @return String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Set the VALUES element
     * 
     * @param values
     */
    public void setValues(final SavotValues values) {
        this.values = values;
    }

    /**
     * Get the VALUES element
     * 
     * @return SavotValues
     */
    public SavotValues getValues() {
        return values;
    }

    /**
     * Get LINK elements set reference
     * 
     * @return LinkSet
     */
    public LinkSet getLinks() {
        if (links == null) {
            links = new LinkSet();
        }
        return links;
    }

    /**
     * Set LINK elements set reference
     * 
     * @param links
     */
    public void setLinks(final LinkSet links) {
        this.links = links;
    }
} public final class SavotFieldRef extends MarkupComment implements RefSupport {

    // ref attribute
    private String ref = null;
    // ucd attribute - since VOTable 1.2
    private String ucd = null;
    // utype attribute - since VOTable 1.2
    private String utype = null;

    /**
     * Constructor
     */
    public SavotFieldRef() {
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     * @since VOTable 1.2
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return String
     * @since VOTable 1.2
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     * @since VOTable 1.2
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return String
     * @since VOTable 1.2
     */
    public String getUtype() {
        return str(utype);
    }
} public final class SavotFits extends MarkupComment {

    // extnum attribute
    private String extnum = null;
    // STREAM element
    private SavotStream stream = null;

    /**
     * Constructor
     */
    public SavotFits() {
    }

    /**
     * Set the extnum
     * 
     * @param extnum
     *            String
     */
    public void setExtnum(final String extnum) {
        this.extnum = extnum;
    }

    /**
     * Get the extnum
     * 
     * @return a String
     */
    public String getExtnum() {
        return str(extnum);
    }

    /**
     * Set the STREAM element
     * 
     * @param stream
     */
    public void setStream(final SavotStream stream) {
        this.stream = stream;
    }

    /**
     * Get the STREAM element
     * 
     * @return SavotStream
     */
    public SavotStream getStream() {
        return stream;
    }
} public final class SavotGroup extends MarkupComment implements IDSupport, NameSupport, RefSupport {

    // ID attribute
    private String id = null;
    // name attribute
    private String name = null;
    // ref attribute
    private String ref = null;
    // ucd attribute
    private String ucd = null;
    // utype attribute
    private String utype = null;
    // description element
    private String description = null;
    // FIELDRef elements
    private FieldRefSet fieldsref = null;
    // PARAM elements
    private ParamSet params = null;
    // PARAMRef elements
    private ParamRefSet paramsref = null;
    // GROUP elements
    private GroupSet groups = null;

    /**
     * Constructor
     */
    public SavotGroup() {
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get id attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     *            ([A-Za-z0-9_.,-]*)
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return String
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Set DESCRIPTION element content
     * 
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION element content
     * 
     * @return String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Get PARAM elements set reference
     * 
     * @return ParamSet
     */
    public ParamSet getParams() {
        if (params == null) {
            params = new ParamSet();
        }
        return params;
    }

    /**
     * Set PARAM elements set reference
     * 
     * @param params
     */
    public void setParams(final ParamSet params) {
        this.params = params;
    }

    /**
     * Set PARAMref elements set reference
     * 
     * @param paramsref
     */
    public void setParamsRef(final ParamRefSet paramsref) {
        this.paramsref = paramsref;
    }

    /**
     * Get PARAMref elements set reference
     * 
     * @return ParamRefSet
     */
    public ParamRefSet getParamsRef() {
        if (paramsref == null) {
            paramsref = new ParamRefSet();
        }
        return paramsref;
    }

    /**
     * Get FIELDref elements set reference
     * 
     * @return FieldRefSet
     */
    public FieldRefSet getFieldsRef() {
        if (fieldsref == null) {
            fieldsref = new FieldRefSet();
        }
        return fieldsref;
    }

    /**
     * Set FIELDref elements set reference
     * 
     * @param fieldsref
     */
    public void setFieldsRef(final FieldRefSet fieldsref) {
        this.fieldsref = fieldsref;
    }

    /**
     * Get GROUP elements set reference
     * 
     * @return GroupSet
     */
    public GroupSet getGroups() {
        if (groups == null) {
            groups = new GroupSet();
        }
        return groups;
    }

    /**
     * Set GROUP elements set reference
     * 
     * @param groups
     */
    public void setGroups(final GroupSet groups) {
        this.groups = groups;
    }
} public final class SavotInfo extends MarkupComment implements IDSupport, NameSupport, RefSupport {

    // id attribute
    private String id = null;

    // name attribute
    private String name = null;

    // value attribute
    private String value = null;

    // INFO element content
    private String content = null;

    // xtype attribute @since 1.2
    private String xtype = null;

    // ref attribute @since 1.2
    private String ref = null;

    // unit attribute @since 1.2
    private String unit = null;

    // ucd attribute @since 1.2
    private String ucd = null;

    // utype attribute @since 1.2
    private String utype = null;

    // DESCRIPTION element - since VOTable 1.2 (not in the standard)
    private String description = null;

    // VALUES element - since VOTable 1.2 (not in the standard)
    private SavotValues values = null;

    // LINK elements - since VOTable 1.2 (not in the standard)
    private LinkSet links = null;

    /**
     * Constructor
     */
    public SavotInfo() {
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get ID attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set value attribute
     * 
     * @param value
     */
    public void setValue(final String value) {
        this.value = value;
    }

    /**
     * Get value attribute
     * 
     * @return String
     */
    public String getValue() {
        return str(value);
    }

    /**
     * Set xtype attribute
     * 
     * @since VOTable 1.2
     * @param xtype
     */
    public void setXtype(final String xtype) {
        this.xtype = xtype;
    }

    /**
     * Get xtype attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getXtype() {
        return str(xtype);
    }

    /**
     * Set ref attribute
     * 
     * @since VOTable 1.2
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set unit attribute
     * 
     * @since VOTable 1.2
     * @param unit
     */
    public void setUnit(final String unit) {
        this.unit = unit;
    }

    /**
     * Get unit attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getUnit() {
        return str(unit);
    }

    /**
     * Set ucd attribute
     * 
     * @since VOTable 1.2
     * @param ucd
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @since VOTable 1.2
     * @param utype
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Set element content
     * 
     * @param content
     */
    public void setContent(final String content) {
        this.content = content;
    }

    /**
     * Get element content
     * 
     * @return a String
     */
    public String getContent() {
        return str(content);
    }

    /**
     * Set DESCRIPTION content
     * 
     * @since VOTable 1.2 (not in the standard)
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION content
     * 
     * @since VOTable 1.2 (not in the standard)
     * @return String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Set the VALUES element
     * 
     * @since VOTable 1.2 (not in the standard)
     * @param values
     */
    public void setValues(final SavotValues values) {
        this.values = values;
    }

    /**
     * Get the VALUES element
     * 
     * @since VOTable 1.2 (not in the standard)
     * @return SavotValues
     */
    public SavotValues getValues() {
        return values;
    }

    /**
     * Get LINK elements set reference
     * 
     * @since VOTable 1.2 (not in the standard)
     * @return LinkSet
     */
    public LinkSet getLinks() {
        if (links == null) {
            links = new LinkSet();
        }
        return links;
    }

    /**
     * Set LINK elements set reference
     * 
     * @since VOTable 1.2 (not in the standard)
     * @param links
     */
    public void setLinks(final LinkSet links) {
        this.links = links;
    }
} public final class SavotLink extends MarkupComment implements IDSupport {

    // content
    private String content = null;
    // ID attribute
    private String id = null;
    // content-role attribute
    private String contentRole = null;
    // content-type attribute
    private String contentType = null;
    // title attribute
    private String title = null;
    // value attribute
    private String value = null;
    // href attribute
    private String href = null;
    // gref attribute - removed since 1.1
    private String gref = null;
    // action attribute - extension since 1.1
    private String action = null;

    /**
     * Constructor
     */
    public SavotLink() {
    }

    /**
     * Set content
     * 
     * @param content
     */
    public void setContent(final String content) {
        this.content = content;
    }

    /**
     * Get content
     * 
     * @return String
     */
    public String getContent() {
        return str(content);
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get ID attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set contentRole attribute
     * 
     * @param contentRole
     *            (query, hints, doc, location)
     */
    public void setContentRole(final String contentRole) {
        this.contentRole = contentRole;
    }

    /**
     * Get contentRole attribute
     * 
     * @return String
     */
    public String getContentRole() {
        return str(contentRole);
    }

    /**
     * Set contentType attribute
     * 
     * @param contentType
     */
    public void setContentType(final String contentType) {
        this.contentType = contentType;
    }

    /**
     * Get contentType attribute
     * 
     * @return String
     */
    public String getContentType() {
        return str(contentType);
    }

    /**
     * Set title attribute
     * 
     * @param title
     */
    public void setTitle(final String title) {
        this.title = title;
    }

    /**
     * Get title attribute
     * 
     * @return String
     */
    public String getTitle() {
        return str(title);
    }

    /**
     * Set value attribute
     * 
     * @param value
     */
    public void setValue(final String value) {
        this.value = value;
    }

    /**
     * Get value attribute
     * 
     * @return String
     */
    public String getValue() {
        return str(value);
    }

    /**
     * Set href attribute
     * 
     * @param href
     */
    public void setHref(final String href) {
        this.href = href;
    }

    /**
     * Get href attribute
     * 
     * @return String
     */
    public String getHref() {
        return str(href);
    }

    /**
     * Set gref attribute removed in VOTable 1.1
     * 
     * @param gref
     */
    public void setGref(final String gref) {
        this.gref = gref;
    }

    /**
     * Get gref attribute removed in VOTable 1.1
     * 
     * @return String
     */
    public String getGref() {
        return str(gref);
    }

    /**
     * Set action attribute
     * 
     * @param action
     */
    public void setAction(final String action) {
        this.action = action;
    }

    /**
     * Get action attribute
     * 
     * @return String
     */
    public String getAction() {
        return str(action);
    }
} public final class SavotMax extends Boundary {

    /**
     * Constructor
     */
    public SavotMax() {
    }
} public final class SavotMin extends Boundary {

    /**
     * Constructor
     */
    public SavotMin() {
    }
} public final class SavotOption extends MarkupComment implements NameSupport {

    // name attribute
    private String name = null;
    // value attribute
    private String value = null;
    // OPTION elements
    private OptionSet options = null;

    /**
     * Constructor
     */
    public SavotOption() {
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set value attribute
     * 
     * @param value
     */
    public void setValue(final String value) {
        this.value = value;
    }

    /**
     * Get value attribute
     * 
     * @return String
     */
    public String getValue() {
        return str(value);
    }

    /**
     * Get OPTION elements reference
     * 
     * @return OptionSet
     */
    public OptionSet getOptions() {
        if (options == null) {
            options = new OptionSet();
        }
        return options;
    }

    /**
     * Set OPTION elements reference
     * 
     * @param options
     */
    public void setOptions(final OptionSet options) {
        this.options = options;
    }
} public final class SavotParam extends MarkupComment implements IDSupport, NameSupport, RefSupport {

    // ID attribute
    private String id = null;
    // unit attribute
    private String unit = null;
    // datatype attribute
    private String datatype = null;
    // precision attribute
    private String precision = null;
    // width attribute
    private String width = null;
    // xtype attribute @since 1.2
    private String xtype = null;
    // ref attribute
    private String ref = null;
    // name attribute
    private String name = null;
    // ucd attribute
    private String ucd = null;
    // utype attribute
    private String utype = null;
    // arraysize attribute
    private String arraysize = null;
    // value attribute
    private String value = null;
    // DESCRIPTION element
    private String description = null;
    // VALUES element
    private SavotValues values = null;
    // LINK element
    private LinkSet links = null;

    /**
     * Constructor
     */
    public SavotParam() {
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get id attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set unit attribute
     * 
     * @param unit
     */
    public void setUnit(final String unit) {
        this.unit = unit;
    }

    /**
     * Get unit attribute
     * 
     * @return String
     */
    public String getUnit() {
        return str(unit);
    }

    /**
     * Set datatype attribute
     * 
     * @param datatype
     *            (boolean, bit, unsignedByte, short, int, long, char,
     *            unicodeChar, float, double, floatComplex, doubleComplex)
     */
    public void setDataType(final String datatype) {
        this.datatype = datatype;
    }

    /**
     * Get datatype attribute
     * 
     * @return String
     */
    public String getDataType() {
        return str(datatype);
    }

    /**
     * Set precision attribute
     * 
     * @param precision
     *            ([EF]?[1-0][0-9]*)
     */
    public void setPrecision(final String precision) {
        this.precision = precision;
    }

    /**
     * Get precision attribute
     * 
     * @return String
     */
    public String getPrecision() {
        return str(precision);
    }

    /**
     * Set width attribute
     * 
     * @param width
     */
    public void setWidth(final String width) {
        this.width = width;
    }

    /**
     * Set width attribute
     * 
     * @param width
     */
    public void setWidthValue(final int width) {
        this.width = toStr(width);
    }

    /**
     * Get width attribute
     * 
     * @return String
     */
    public String getWidth() {
        return str(width);
    }

    /**
     * Get width attribute
     * 
     * @return String
     */
    public int getWidthValue() {
        return integer(width);
    }

    /**
     * Set xtype attribute
     * 
     * @since VOTable 1.2
     * @param xtype
     */
    public void setXtype(final String xtype) {
        this.xtype = xtype;
    }

    /**
     * Get xtype attribute
     * 
     * @since VOTable 1.2
     * @return String
     */
    public String getXtype() {
        return str(xtype);
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     *            ([A-Za-z0-9_.,-]*)
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return String
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Set value attribute
     * 
     * @param value
     */
    public void setValue(final String value) {
        this.value = value;
    }

    /**
     * Get value attribute
     * 
     * @return String
     */
    public String getValue() {
        return str(value);
    }

    /**
     * Set arraysize attribute
     * 
     * @param arraysize
     *            (([0-9]+x)*[0-9]*[*]?(s\W)?)
     */
    public void setArraySize(final String arraysize) {
        this.arraysize = arraysize;
    }

    /**
     * Get arraysize attribute
     * 
     * @return String
     */
    public String getArraySize() {
        return str(arraysize);
    }

    /**
     * Set DESCRIPTION content
     * 
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION content
     * 
     * @return String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Set VALUES element
     * 
     * @param values
     */
    public void setValues(final SavotValues values) {
        this.values = values;
    }

    /**
     * Get VALUES element
     * 
     * @return a SavotValues object
     */
    public SavotValues getValues() {
        return values;
    }

    /**
     * Get Link set reference
     * 
     * @return a set of LINK elements
     */
    public LinkSet getLinks() {
        if (links == null) {
            links = new LinkSet();
        }
        return links;
    }

    /**
     * Set Link set reference
     * 
     * @param links
     */
    public void setLinks(LinkSet links) {
        this.links = links;
    }
} public final class SavotParamRef extends MarkupComment implements RefSupport {

    // ref attribute
    private String ref = null;
    // ucd attribute - since VOTable 1.2
    private String ucd = null;
    // utype attribute - since VOTable 1.2
    private String utype = null;

    /**
     * Constructor
     */
    public SavotParamRef() {
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     * @since VOTable 1.2
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return String
     * @since VOTable 1.2
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     * @since VOTable 1.2
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return String
     * @since VOTable 1.2
     */
    public String getUtype() {
        return str(utype);
    }
} public final class SavotResource extends MarkupComment implements IDSupport, NameSupport {

    // name attribute
    private String name = null;

    // id attribute
    private String id = null;

    // type attribute (results, meta)
    private String type = "results"; // default

    // utype attribute
    private String utype = null;

    // DESCRIPTION element
    private String description = null;

    // COOSYS element set - deprecated since 1.2
    private CoosysSet coosys = null;

    // GROUP element set - since VOTable 1.2
    private GroupSet groups = null;

    // PARAM element set
    private ParamSet params = null;

    // INFO element set
    private InfoSet infos = null;

    // LINK element set
    private LinkSet links = null;

    // TABLE element set
    private TableSet tables = null;

    // RESOURCE element set (recursive usage)
    private ResourceSet resources = null;

    // INFO (at End) element set - since VOTable 1.2
    private InfoSet infosAtEnd = null;

    /**
     * Constructor
     */
    public SavotResource() {
    }

    /**
     * init a SavotResource object
     */
    public void init() {
        name = null;
        id = null;
        type = null;
        utype = null;
        description = null;

        coosys = null;
        groups = null;
        params = null;
        infos = null;
        links = null;
        tables = null;
        resources = null;
        infosAtEnd = null;
    }

    /**
     * Set the description
     * 
     * @param description
     *            String
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get the description
     * 
     * @return a String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Set the Coosys elements
     * 
     * @deprecated since VOTable 1.2
     * @param coosys
     */
    public void setCoosys(final CoosysSet coosys) {
        this.coosys = coosys;
    }

    /**
     * Get the Coosys elements
     * 
     * @deprecated since VOTable 1.2
     * @return a CoosysSet object
     */
    public CoosysSet getCoosys() {
        if (coosys == null) {
            coosys = new CoosysSet();
        }
        return coosys;
    }

    /**
     * Set GROUP element set reference
     * 
     * @since VOTable 1.2
     * @param groups
     */
    public void setGroups(final GroupSet groups) {
        this.groups = groups;
    }

    /**
     * Get GROUP element set reference
     * 
     * @since VOTable 1.2
     * @return GroupSet
     */
    public GroupSet getGroups() {
        if (groups == null) {
            groups = new GroupSet();
        }
        return groups;
    }

    /**
     * Set the Infos elements
     * 
     * @param infos
     */
    public void setInfos(final InfoSet infos) {
        this.infos = infos;
    }

    /**
     * Get the Infos elements
     * 
     * @return a InfoSet object
     */
    public InfoSet getInfos() {
        if (infos == null) {
            infos = new InfoSet();
        }
        return infos;
    }

    /**
     * Set the Param elements
     * 
     * @param params
     */
    public void setParams(final ParamSet params) {
        this.params = params;
    }

    /**
     * Get the Param elements
     * 
     * @return a ParamSet object
     */
    public ParamSet getParams() {
        if (params == null) {
            params = new ParamSet();
        }
        return params;
    }

    /**
     * Set the Link elements
     * 
     * @param links
     */
    public void setLinks(final LinkSet links) {
        this.links = links;
    }

    /**
     * Get the Link elements
     * 
     * @return a LinkSet object
     */
    public LinkSet getLinks() {
        if (links == null) {
            links = new LinkSet();
        }
        return links;
    }

    /**
     * Set the Table elements
     * 
     * @param tables
     */
    public void setTables(final TableSet tables) {
        this.tables = tables;
    }

    /**
     * Get the Table elements
     * 
     * @return a TableSet object
     */
    public TableSet getTables() {
        if (tables == null) {
            tables = new TableSet();
        }
        return tables;
    }

    /**
     * Set the Resource elements
     * 
     * @param resources
     */
    public void setResources(final ResourceSet resources) {
        this.resources = resources;
    }

    /**
     * Get the Resource elements
     * 
     * @return a ResourceSet object
     */
    public ResourceSet getResources() {
        if (resources == null) {
            resources = new ResourceSet();
        }
        return resources;
    }

    /**
     * Set the InfosAtEnd elements
     * 
     * @param infosAtEnd
     * @since VOTable 1.2
     */
    public void setInfosAtEnd(final InfoSet infosAtEnd) {
        this.infosAtEnd = infosAtEnd;
    }

    /**
     * Get the InfosAtEnd elements
     * 
     * @return a InfoSet object
     * @since VOTable 1.2
     */
    public InfoSet getInfosAtEnd() {
        if (infosAtEnd == null) {
            infosAtEnd = new InfoSet();
        }
        return infosAtEnd;
    }

    /**
     * Set the name attribute
     * 
     * @param name
     *            String
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get the name attribute
     * 
     * @return a String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set the id attribute
     * 
     * @param id
     *            String
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get the id attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set the type attribute
     * 
     * @param type
     *            String (results, meta)
     */
    public void setType(final String type) {
        this.type = type;
    }

    /**
     * Get the type attribute
     * 
     * @return a String
     */
    public String getType() {
        return str(type);
    }

    /**
     * Set the utype attribute
     * 
     * @param utype
     *            String
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get the utype attribute
     * 
     * @return a String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Get the number of TR object for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return int
     */
    public int getTRCount(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getData().getTableData().getTRs().getItemCount();
    }

    /**
     * Get a TRSet object for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return TRSet
     */
    public TRSet getTRSet(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getData().getTableData().getTRs();
    }

    /**
     * Get a TR object for table index tableIndex and the corresponding row
     * index rowIndex of this table (shortcut)
     * 
     * @param tableIndex
     * @param rowIndex
     * @return SavotTR
     */
    public SavotTR getTR(final int tableIndex, final int rowIndex) {
        return getTables().getItemAt(tableIndex).getData().getTableData().getTRs().getItemAt(rowIndex);
    }

    /**
     * Return the number of tables contained in the resource this value doesn't
     * contain the tables of included resources (shortcut)
     * 
     * @return int
     */
    public int getTableCount() {
        return getTables().getItemCount();
    }

    /**
     * Get a FieldSet object for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return FieldSet
     */
    public FieldSet getFieldSet(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getFields();
    }

    /**
     * Get a LinkSet object for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return LinkSet
     */
    public LinkSet getLinkSet(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getLinks();
    }

    /**
     * Get a Description object (String) for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return String
     */
    public String getDescription(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getDescription();
    }

    /**
     * Get a SavotData object for table index tableIndex (shortcut)
     * 
     * @param tableIndex
     * @return SavotData
     */
    public SavotData getData(final int tableIndex) {
        return getTables().getItemAt(tableIndex).getData();
    }
} public final class SavotStream extends MarkupComment {

    // content
    private String content = null;
    // type attribute (locator, other)
    private String type = "locator"; // default
    // href attribute
    private String href = null;
    // actuate attribute
    private String actuate = null;
    // width encoding
    private String encoding = null;
    // expires attribute
    private String expires = null;
    // rights attribute
    private String rights = null;

    /**
     * Constructor
     */
    public SavotStream() {
    }

    /**
     * Set type attribute
     * 
     * @param type
     *            (locator, other)
     */
    public void setType(final String type) {
        this.type = type;
    }

    /**
     * Get type attribute
     * 
     * @return String
     */
    public String getType() {
        return str(type);
    }

    /**
     * Set href attribute
     * 
     * @param href
     *            (URI)
     */
    public void setHref(final String href) {
        this.href = href;
    }

    /**
     * Get href attribute
     * 
     * @return String
     */
    public String getHref() {
        return str(href);
    }

    /**
     * Set actuate attribute
     * 
     * @param actuate
     *            (onLoad, onRequest, other, none)
     */
    public void setActuate(final String actuate) {
        this.actuate = actuate;
    }

    /**
     * Get actuate attribute
     * 
     * @return String
     */
    public String getActuate() {
        return str(actuate);
    }

    /**
     * Set encoding attribute
     * 
     * @param encoding
     *            (gzip, base64, dynamic, none)
     */
    public void setEncoding(final String encoding) {
        this.encoding = encoding;
    }

    /**
     * Get encoding attribute
     * 
     * @return String
     */
    public String getEncoding() {
        return str(encoding);
    }

    /**
     * Set expires attribute
     * 
     * @param expires
     */
    public void setExpires(final String expires) {
        this.expires = expires;
    }

    /**
     * Get width attribute
     * 
     * @return String
     */
    public String getExpires() {
        return str(expires);
    }

    /**
     * Set rights attribute
     * 
     * @param rights
     */
    public void setRights(final String rights) {
        this.rights = rights;
    }

    /**
     * Get rights attribute
     * 
     * @return String
     */
    public String getRights() {
        return str(rights);
    }

    /**
     * Set content
     * 
     * @param content
     */
    public void setContent(final String content) {
        this.content = content;
    }

    /**
     * Get content
     * 
     * @return String
     */
    public String getContent() {
        return str(content);
    }
} public final class SavotTD extends SavotBase {
    // TD content

    private String content = null;

    /**
     * Constructor
     */
    public SavotTD() {
    }

    /**
     * Constructor with content
     * @param content
     */
    public SavotTD(final String content) {
        this.content = content;
    }

    /**
     * Set element content
     * 
     * @param content
     */
    public void setContent(final String content) {
        this.content = content;
    }

    /**
     * Get element content
     * 
     * @return a String
     */
    public String getContent() {
        return str(content);
    }

    /**
     * Get the raw content value (maybe null)
     *
     * @return a String or null
     */
    public String getRawContent() {
        return content;
    }
} public final class SavotTable extends MarkupComment implements IDSupport, NameSupport, RefSupport {

    // id attribute
    private String id = null;
    // name attribute
    private String name = null;
    // ucd attribute
    private String ucd = null;
    // utype attribute
    private String utype = null;
    // ref attribute
    private String ref = null;
    // nrows attribute
    private String nrows = null;
    // DESCRIPTION element
    private String description = null;
    // FIELD element
    private FieldSet fields = null;
    // PARAM element
    private ParamSet params = null;
    // GROUP element - since VOTable 1.1
    private GroupSet groups = null;
    // LINK element
    private LinkSet links = null;
    // DATA element
    private SavotData data = null;
    // INFO element at the end - since VOTable 1.2
    private InfoSet infosAtEnd = null;

    /**
     * Constructor
     */
    public SavotTable() {
    }

    /**
     * Set ID attribute
     * 
     * @param id
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get ID attribute
     * 
     * @return a String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set name attribute
     * 
     * @param name
     */
    @Override
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Get name attribute
     * 
     * @return a String
     */
    @Override
    public String getName() {
        return str(name);
    }

    /**
     * Set ucd attribute
     * 
     * @param ucd
     */
    public void setUcd(final String ucd) {
        this.ucd = ucd;
    }

    /**
     * Get ucd attribute
     * 
     * @return a String
     */
    public String getUcd() {
        return str(ucd);
    }

    /**
     * Set utype attribute
     * 
     * @param utype
     */
    public void setUtype(final String utype) {
        this.utype = utype;
    }

    /**
     * Get utype attribute
     * 
     * @return a String
     */
    public String getUtype() {
        return str(utype);
    }

    /**
     * Set ref attribute
     * 
     * @param ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get ref attribute
     * 
     * @return a String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set nrows attribute
     * 
     * @param nrows
     */
    public void setNrows(final String nrows) {
        this.nrows = nrows;
    }

    /**
     * Set nrows attribute
     * 
     * @param nrows
     */
    public void setNrowsValue(final int nrows) {
        this.nrows = toStr(nrows);
    }

    /**
     * Get nrows attribute
     * 
     * @return a String
     */
    public String getNrows() {
        return str(nrows);
    }

    /**
     * Get nrows attribute
     * 
     * @return an int
     */
    public int getNrowsValue() {
        return integer(nrows);
    }

    /**
     * Set DESCRIPTION content
     * 
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION content
     * 
     * @return a String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Get FIELD element set reference
     * 
     * @return FieldSet
     */
    public FieldSet getFields() {
        if (fields == null) {
            fields = new FieldSet();
        }
        return fields;
    }

    /**
     * Set FIELD element set reference
     * 
     * @param fields
     */
    public void setFields(final FieldSet fields) {
        this.fields = fields;
    }

    /**
     * Get PARAM element set reference
     * 
     * @return ParamSet
     */
    public ParamSet getParams() {
        if (params == null) {
            params = new ParamSet();
        }
        return params;
    }

    /**
     * Set PARAM element set reference
     * 
     * @param params
     */
    public void setParams(final ParamSet params) {
        this.params = params;
    }

    /**
     * Get GROUP element set reference
     * 
     * @since VOTable 1.1
     * @return GroupSet
     */
    public GroupSet getGroups() {
        if (groups == null) {
            groups = new GroupSet();
        }
        return groups;
    }

    /**
     * Set GROUP element set reference
     * 
     * @since VOTable 1.1
     * @param groups
     */
    public void setGroups(final GroupSet groups) {
        this.groups = groups;
    }

    /**
     * Get LINK element set reference
     * 
     * @return LinkSet
     */
    public LinkSet getLinks() {
        if (links == null) {
            links = new LinkSet();
        }
        return links;
    }

    /**
     * Set LINK element set reference
     * 
     * @param links
     */
    public void setLinks(final LinkSet links) {
        this.links = links;
    }

    /**
     * Set DATA element
     * 
     * @param data
     */
    public void setData(final SavotData data) {
        this.data = data;
    }

    /**
     * Get DATA element
     * 
     * @return SavotData
     */
    public SavotData getData() {
        return data;
    }

    /**
     * Set the InfosAtEnd elements
     * 
     * @param infosAtEnd
     * @since VOTable 1.2
     */
    public void setInfosAtEnd(final InfoSet infosAtEnd) {
        this.infosAtEnd = infosAtEnd;
    }

    /**
     * Get the InfosAtEnd elements
     * 
     * @return an InfoSet object
     * @since VOTable 1.2
     */
    public InfoSet getInfosAtEnd() {
        if (infosAtEnd == null) {
            infosAtEnd = new InfoSet();
        }
        return infosAtEnd;
    }
} public final class SavotVOTable extends MarkupComment implements IDSupport {

    // xmlns attribute
    private String xmlns = null;
    // xmlns:xsi attribute
    private String xmlnsxsi = null;
    // xsi:NoNamespaceSchemaLocation attribute
    private String xsinoschema = null;
    // xsi:schemaLocation attribute
    private String xsischema = null;
    // id attribute
    private String id = null;
    // version attribute (default : 1.2)
    private String version = "1.2";
    // DESCRIPTION element
    private String description = null;
    // COOSYS element set - deprecated since 1.2
    private CoosysSet coosys = null;
    // PARAM element set
    private ParamSet params = null;
    // GROUP element set
    private GroupSet groups = null;
    // INFO element set
    private InfoSet infos = null;
    // DEFINITIONS element
    @SuppressWarnings("deprecation")
    private SavotDefinitions definitions = null;
    // RESOURCE element
    private ResourceSet resources = null;
    // INFO element set at the end - since VOTable1.2
    private InfoSet infosAtEnd = null;

    /**
     * Constructor
     */
    public SavotVOTable() {
    }

    /**
     * Set the global attributes (<VOTABLE .. global attributes ..
     * version="1.1">) (used for the writer)
     * 
     * @param xmlns
     *            String
     */
    public void setXmlns(final String xmlns) {
        this.xmlns = xmlns;
    }

    /**
     * Get the global attributes (<VOTABLE .. global attributes ..
     * version="1.1"> (used for the writer)
     * 
     * @return String
     */
    public String getXmlns() {
        return str(xmlns);
    }

    /**
     * Set the global attributes (<VOTABLE .. global attributes ..
     * version="1.1">) (used for the writer)
     * 
     * @param xmlnsxsi
     *            String
     */
    public void setXmlnsxsi(final String xmlnsxsi) {
        this.xmlnsxsi = xmlnsxsi;
    }

    /**
     * Get the global attributes (<VOTABLE .. global attributes ..
     * version="1.1"> (used for the writer)
     * 
     * @return String
     */
    public String getXmlnsxsi() {
        return str(xmlnsxsi);
    }

    /**
     * Set the global attributes (<VOTABLE .. global attributes ..
     * version="1.1">) (used for the writer)
     * 
     * @param xsinoschema
     *            String
     */
    public void setXsinoschema(final String xsinoschema) {
        this.xsinoschema = xsinoschema;
    }

    /**
     * Get the global attributes (<VOTABLE .. global attributes ..
     * version="1.1"> (used for the writer)
     * 
     * @return String
     */
    public String getXsinoschema() {
        return str(xsinoschema);
    }

    /**
     * Set the global attributes (<VOTABLE .. global attributes ..
     * version="1.1">) (used for the writer)
     * 
     * @param xsischema
     *            String
     */
    public void setXsischema(final String xsischema) {
        this.xsischema = xsischema;
    }

    /**
     * Get the global attributes (<VOTABLE .. global attributes ..
     * version="1.1"> (used for the writer)
     * 
     * @return String
     */
    public String getXsischema() {
        return str(xsischema);
    }

    /**
     * Set the id attribute
     * 
     * @param id
     *            String
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get the id attribute
     * 
     * @return String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set the version attribute
     * 
     * @param version
     *            String
     */
    public void setVersion(final String version) {
        this.version = version;
    }

    /**
     * Get the version attribute
     * 
     * @return String
     */
    public String getVersion() {
        return str(version);
    }

    /**
     * Set DESCRIPTION element
     * 
     * @param description
     */
    public void setDescription(final String description) {
        this.description = description;
    }

    /**
     * Get DESCRIPTION element
     * 
     * @return a String
     */
    public String getDescription() {
        return str(description);
    }

    /**
     * Set DEFINITIONS element
     * 
     * @deprecated since VOTable 1.1
     * @param definitions
     */
    public void setDefinitions(final SavotDefinitions definitions) {
        this.definitions = definitions;
    }

    /**
     * Get DEFINITIONS element
     * 
     * @deprecated since VOTable 1.1
     * @return SavotDefinitions
     */
    public SavotDefinitions getDefinitions() {
        return definitions;
    }

    /**
     * Set the Coosys elements
     * 
     * @deprecated since VOTable 1.2
     * @param coosys
     */
    public void setCoosys(final CoosysSet coosys) {
        this.coosys = coosys;
    }

    /**
     * Get the Coosys elements
     * 
     * @deprecated since VOTable 1.2
     * @return a CoosysSet object
     */
    public CoosysSet getCoosys() {
        if (coosys == null) {
            coosys = new CoosysSet();
        }
        return coosys;
    }

    /**
     * Set the Infos elements
     * 
     * @param infos
     */
    public void setInfos(final InfoSet infos) {
        this.infos = infos;
    }

    /**
     * Get the Infos elements
     * 
     * @return a InfoSet object
     */
    public InfoSet getInfos() {
        if (infos == null) {
            infos = new InfoSet();
        }
        return infos;
    }

    /**
     * Set the Param elements
     * 
     * @param params
     */
    public void setParams(final ParamSet params) {
        this.params = params;
    }

    /**
     * Get the Param elements
     * 
     * @return a ParamSet object
     */
    public ParamSet getParams() {
        if (params == null) {
            params = new ParamSet();
        }
        return params;
    }

    /**
     * Set GROUP element set reference
     * 
     * @since VOTable 1.2
     * @param groups
     */
    public void setGroups(final GroupSet groups) {
        this.groups = groups;
    }

    /**
     * Get GROUP element set reference
     * 
     * @since VOTable 1.2
     * @return GroupSet
     */
    public GroupSet getGroups() {
        if (groups == null) {
            groups = new GroupSet();
        }
        return groups;
    }

    /**
     * Get RESOURCE set reference (FULL mode only)
     * 
     * @return ResourceSet (always NULL in SEQUENTIAL mode)
     */
    public ResourceSet getResources() {
        if (resources == null) {
            resources = new ResourceSet();
        }
        return resources;
    }

    /**
     * Set RESOURCE set reference
     * 
     * @param resources
     */
    public void setResources(final ResourceSet resources) {
        this.resources = resources;
    }

    /**
     * Set the InfosAtEnd elements
     * 
     * @param infosAtEnd
     * @since VOTable 1.2
     */
    public void setInfosAtEnd(final InfoSet infosAtEnd) {
        this.infosAtEnd = infosAtEnd;
    }

    /**
     * Get the InfosAtEnd elements
     * 
     * @return a InfoSet object
     * @since VOTable 1.2
     */
    public InfoSet getInfosAtEnd() {
        if (infosAtEnd == null) {
            infosAtEnd = new InfoSet();
        }
        return infosAtEnd;
    }
} public final class SavotValues extends MarkupComment implements IDSupport, RefSupport {

    // ID attribute
    private String id = null;
    // type attribute
    private String type = "legal";
    // null content
    private String nul = null;
    // ref content
    private String ref = null;
    // invalid content - deprecated since VOTable 1.1
    private String invalid = null;
    // MIN element
    private SavotMin min = null;
    // MAX element
    private SavotMax max = null;
    // OPTION element
    private OptionSet options = null;

    /**
     * Constructor
     */
    public SavotValues() {
    }

    /**
     * Set the id attribute
     * 
     * @param id
     *            String
     */
    @Override
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Get the id attribute
     * 
     * @return a String
     */
    @Override
    public String getId() {
        return str(id);
    }

    /**
     * Set the type attribute
     * 
     * @param type
     *            String (legal, actual)
     */
    public void setType(final String type) {
        this.type = type;
    }

    /**
     * Get the type attribute
     * 
     * @return a String
     */
    public String getType() {
        return str(type);
    }

    /**
     * Set the null attribute
     * 
     * @param nul
     *            String
     */
    public void setNull(final String nul) {
        this.nul = nul;
    }

    /**
     * Get the null attribute
     * 
     * @return a String
     */
    public String getNull() {
        return str(nul);
    }

    /**
     * Set the ref attribute
     * 
     * @param ref
     *            ref
     */
    @Override
    public void setRef(final String ref) {
        this.ref = ref;
    }

    /**
     * Get the ref attribute
     * 
     * @return a String
     */
    @Override
    public String getRef() {
        return str(ref);
    }

    /**
     * Set the invalid attribute deprecated since VOTable 1.1
     * 
     * @param invalid
     *            String
     */
    public void setInvalid(final String invalid) {
        this.invalid = invalid;
    }

    /**
     * Get the invalid attribute deprecated since VOTable 1.1
     * 
     * @return a String
     */
    public String getInvalid() {
        return str(invalid);
    }

    /**
     * Set MIN element
     * 
     * @param min
     */
    public void setMin(final SavotMin min) {
        this.min = min;
    }

    /**
     * Get MIN element
     * 
     * @return a SavotMin object
     */
    public SavotMin getMin() {
        return min;
    }

    /**
     * Set MAX element
     * 
     * @param max
     */
    public void setMax(final SavotMax max) {
        this.max = max;
    }

    /**
     * Get MAX element
     * 
     * @return a SavotMax object
     */
    public SavotMax getMax() {
        return max;
    }

    /**
     * Get OPTION element set reference
     * 
     * @return OptionSet object
     */
    public OptionSet getOptions() {
        if (options == null) {
            options = new OptionSet();
        }
        return options;
    }

    /**
     * Set OPTION element set reference
     * 
     * @param options
     */
    public void setOptions(final OptionSet options) {
        this.options = options;
    }
}
import java.util.ArrayList;
import cds.savot.model.SavotCoosys;
import cds.savot.model.SavotField;
import cds.savot.model.SavotFieldRef;
import cds.savot.model.SavotFits;
import cds.savot.model.SavotGroup;
import cds.savot.model.SavotInfo;
import cds.savot.model.SavotLink;
import cds.savot.model.SavotMax;
import cds.savot.model.SavotMin;
import cds.savot.model.SavotOption;
import cds.savot.model.SavotParam;
import cds.savot.model.SavotParamRef;
import cds.savot.model.SavotResource;
import cds.savot.model.SavotStream;
import cds.savot.model.SavotTD;
import cds.savot.model.SavotTable;
import cds.savot.model.SavotVOTable;
import cds.savot.model.SavotValues;
package cds.savot.sax;

//Copyright 2002-2014 - UDS/CNRS
//The SAVOT library is distributed under the terms
//of the GNU General Public License version 3.
//
//This file is part of SAVOT.
//
//SAVOT is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, version 3 of the License.
//
//SAVOT is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//The GNU General Public License is available in COPYING file
//along with SAVOT.
//
//SAVOT - Simple Access to VOTable - Parser
//
//Author, Co-Author:  Andre Schaaff (CDS), Laurent Bourges (JMMC)


/**
 * <p>
 * This interface must be implemented to use the Savot SAX parser
 * </p>
 * 
 * @author Andre Schaaff
 */
@SuppressWarnings("deprecation")
public interface SavotSAXConsumer {

    // start elements
    public abstract void startVotable(ArrayList<SavotVOTable> attributes);