@Override
	public int compareTo(Version o) {
		if (o.major > major) {
			return -1;
		}
		else if (o.major < major) {
			return 1;
		}
		
		if (o.minor > minor) {
			return -1;
		}
		else if (o.minor < minor) {
			return 1;
		}
		
		if (o.patch > patch) {
			return -1;
		}
		else if (o.patch > patch) {
			return 1;
		}
		
		return state.compareTo(o.state);
	}