public class Species {
    // OVERVIEW: Immutable record type for representing a species with a name and genome.
    /*@non_null@*/ private String name;
    /*@non_null@*/ private Genome genome;

    public Species (/*@non_null@*/ String n, /*@non_null@*/ Genome g) {
	name = n;
	genome = g;
    }

    public String toString () {
	return name + " [" + genome + "]";
    }

    public /*@non_null@*/ String getName () {
	return name;
    }

    public /*@non_null@*/ Genome getGenome () {
	return genome;
    }

    int mutationDistance (/*@non_null@*/ Species s) {
	return genome.mutationDistance (s.getGenome ());
    }
}