package etomica.models.water;
import etomica.AtomTypeGroup;
import etomica.Default;
import etomica.EtomicaElement;
import etomica.Simulation;
import etomica.Species;

public class SpeciesWater extends Species implements EtomicaElement {
    
    public SpeciesWater(Simulation sim) {
        this(sim, Default.MOLECULE_COUNT);
    }
    public SpeciesWater(Simulation sim, int nM) {
        this(sim, nM, Species.makeAgentType(sim));
    }
    private SpeciesWater(Simulation sim, int nM, AtomTypeGroup agentType) {
       super(sim, new AtomFactoryWater(sim, agentType),
               agentType);
       factory.setSpecies(this);
       nMolecules = nM;
    }
    
}
@@ -23,16 +23,55 @@
 .water;%0A
+import java.lang.reflect.Constructor;%0A%0A
 import e
@@ -92,16 +92,16 @@
 eGroup;%0A
-
 import e
@@ -197,16 +197,49 @@
 Species;
+%0Aimport etomica.SpeciesSignature;
 %0A%0Apublic
@@ -727,14 +727,422 @@
 ;%0A    %7D%0A
-
     %0A
+    public SpeciesSignature getSpeciesSignature() %7B%0A        Constructor constructor = null;%0A        try %7B%0A            constructor = this.getClass().getConstructor(new Class%5B%5D%7BSimulation.class%7D);%0A        %7D%0A        catch(NoSuchMethodException e) %7B%0A            System.err.println(%22you have no constructor.  be afraid%22);%0A        %7D%0A        return new SpeciesSignature(getName(),constructor,new Object%5B%5D%7B%7D);%0A    %7D%0A
 %7D

add SpeciesSignature, the info needed to reconstruct a Species, implement getSpeciesSignature (SpeciesTree needs work) and add methods in Phase to write and read Phase info include Species