ImmutableHydrogen implements IAtom { @Override public IAtom clone() { return this; }  @Override IAtom clone(); @Override Double getCharge(); @Override Point3d getFractionalPoint3d(); @Override Integer getImplicitHydrogenCount(); @Override Point2d getPoint2d(); @Override Point3d getPoint3d(); @Override Integer getStereoParity(); @Override void setCharge(Double charge); @Override void setFractionalPoint3d(Point3d point3d); @Override void setImplicitHydrogenCount(Integer hydrogenCount); @Override void setPoint2d(Point2d point2d); @Override void setPoint3d(Point3d point3d); @Override void setStereoParity(Integer stereoParity); @Override String getAtomTypeName(); @Override Double getBondOrderSum(); @Override Double getCovalentRadius(); @Override Integer getFormalCharge(); @Override Integer getFormalNeighbourCount(); @Override Hybridization getHybridization(); @Override Order getMaxBondOrder(); @Override Integer getValency(); @Override void setAtomTypeName(String identifier); @Override void setBondOrderSum(Double bondOrderSum); @Override void setCovalentRadius(Double radius); @Override void setFormalCharge(Integer charge); @Override void setFormalNeighbourCount(Integer count); @Override void setHybridization(Hybridization hybridization); @Override void setMaxBondOrder(Order maxBondOrder); @Override void setValency(Integer valency); @Override Double getExactMass(); @Override Integer getMassNumber(); @Override Double getNaturalAbundance(); @Override void setExactMass(Double exactMass); @Override void setMassNumber(Integer massNumber); @Override void setNaturalAbundance(Double naturalAbundance); @Override Integer getAtomicNumber(); @Override String getSymbol(); @Override void setAtomicNumber(Integer atomicNumber); @Override void setSymbol(String symbol); @Override void addListener(IChemObjectListener col); @Override boolean getFlag(int flagType); @Override boolean[] getFlags(); @Override Number getFlagValue(); @Override String getID(); @Override int getListenerCount(); @Override boolean getNotification(); @Override Map<Object, Object> getProperties(); @Override Object getProperty(Object description); @Override T getProperty(Object description, Class<T> c); @Override void notifyChanged(); @Override void notifyChanged(IChemObjectChangeEvent evt); @Override void removeListener(IChemObjectListener col); @Override void removeProperty(Object description); @Override void setFlag(int flagType, boolean flagValue); @Override void setFlags(boolean[] flagsNew); @Override void setID(String identifier); @Override void setNotification(boolean bool); @Override void setProperties(Map<Object, Object> properties); @Override void addProperties(Map<Object, Object> properties); @Override void setProperty(Object description, Object property); @Override IChemObjectBuilder getBuilder(); @Override boolean isAromatic(); @Override void setIsAromatic(boolean arom); @Override boolean isInRing(); @Override void setIsInRing(boolean ring); @Override IAtomContainer getContainer(); @Override int getIndex(); @Override Iterable<IBond> bonds(); @Override int getBondCount(); @Override IBond getBond(IAtom atom);  }
@Test public void testClone() throws Exception { IAtom hydrogen = new ImmutableHydrogen(); Assert.assertEquals(hydrogen, hydrogen.clone()); }