public CModel createModel(CCopasiDataModel dataModel) {
   try {
     dataModel.newModel();
   } catch (Exception e) {
     return null;
   }
   CModel model = dataModel.getModel();
   model.setVolumeUnit(CModel.fl);
   model.setTimeUnit(CModel.s);
   model.setQuantityUnit(CModel.fMol);
   CCompartment comp = model.createCompartment("CompartmentA");
   CMetab A = model.createMetabolite("A", comp.getObjectName());
   A.setInitialConcentration(2.0e-4);
   CMetab B = model.createMetabolite("B", comp.getObjectName());
   B.setInitialConcentration(0.0);
   CReaction react = model.createReaction("Decay_1");
   react.addSubstrate(A.getKey());
   react.addProduct(B.getKey());
   react.setReversible(false);
   react.setFunction("Mass action (irreversible)");
   react.setParameterValue("k1", 0.5);
   StringStdVector mapping = new StringStdVector();
   mapping.add(react.getChemEq().getSubstrate(0).getMetabolite().getKey());
   react.setParameterMappingVector(
       react.getFunction().getVariables().getParameter(1).getObjectName(), mapping);
   ;
   model.compileIfNecessary();
   ObjectStdVector changedObjects = new ObjectStdVector();
   changedObjects.add(comp.getObject(new CCopasiObjectName("Reference=InitialVolume")));
   changedObjects.add(A.getObject(new CCopasiObjectName("Reference=InitialConcentration")));
   changedObjects.add(B.getObject(new CCopasiObjectName("Reference=InitialConcentration")));
   changedObjects.add(
       react.getParameters().getParameter(0).getObject(new CCopasiObjectName("Reference=Value")));
   model.updateInitialValues(changedObjects);
   return model;
 }