test_class.declarator: logger = LoggingToolFactory.createLoggingTool(MDLV2000ReaderTest.class)
test_class.modifier: private static
test_class.original_string: private static ILoggingTool logger = LoggingToolFactory.createLoggingTool(MDLV2000ReaderTest.class);
test_class.type: ILoggingTool
test_class.var_name: logger
test_class.file: storage/ctab/src/test/java/org/openscience/cdk/io/MDLV2000ReaderTest.java
test_class.identifier: MDLV2000ReaderTest
test_class.superclass: extends SimpleChemObjectReaderTest
test_case.body: @Test
      public void testSgroupRepeatUnit() throws Exception {
          try (MDLV2000Reader mdlr = new MDLV2000Reader(getClass().getResourceAsStream("/data/mdl/sgroup-sru.mol"))) {
              IAtomContainer container = mdlr.read(new AtomContainer());
              List<Sgroup> sgroups = container.getProperty(CDKConstants.CTAB_SGROUPS);
              assertNotNull(sgroups);
              assertThat(sgroups.size(), is(1));
              Sgroup sgroup = sgroups.get(0);
              assertThat(sgroup.getType(), is(SgroupType.CtabStructureRepeatUnit));
              assertThat(sgroup.getSubscript(), is("n"));
              assertThat((String) sgroup.getValue(SgroupKey.CtabConnectivity), is("HT"));
              assertThat(sgroup.getAtoms().size(), is(10));
              assertThat(sgroup.getBonds().size(), is(2));
              List<SgroupBracket> brackets = sgroup.getValue(SgroupKey.CtabBracket);
              assertThat(brackets.size(), is(2));
              // M  SDI   1  4    2.2579   -0.8756    1.7735   -1.6600
              assertThat(brackets.get(0).getFirstPoint().x, closeTo(2.2579, 0.001));
              assertThat(brackets.get(0).getFirstPoint().y, closeTo(-0.8756, 0.001));
              assertThat(brackets.get(0).getSecondPoint().x, closeTo(1.7735, 0.001));
              assertThat(brackets.get(0).getSecondPoint().y, closeTo(-1.6600, 0.001));
              // M  SDI   1  4   -0.9910   -1.7247   -0.4960   -0.8673
              assertThat(brackets.get(1).getFirstPoint().x, closeTo(-0.9910, 0.001));
              assertThat(brackets.get(1).getFirstPoint().y, closeTo(-1.7247, 0.001));
              assertThat(brackets.get(1).getSecondPoint().x, closeTo(-0.4960, 0.001));
              assertThat(brackets.get(1).getSecondPoint().y, closeTo(-0.8673, 0.001));
  
          }
      }
test_case.class_method_signature: MDLV2000ReaderTest.testSgroupRepeatUnit()
test_case.full_signature: @Test public void testSgroupRepeatUnit()
test_case.identifier: testSgroupRepeatUnit
test_case.invocations: getResourceAsStream getClass read getProperty assertNotNull assertThat size is get assertThat getType is assertThat getSubscript is assertThat getValue is assertThat size getAtoms is assertThat size getBonds is getValue assertThat size is assertThat getFirstPoint get closeTo assertThat getFirstPoint get closeTo assertThat getSecondPoint get closeTo assertThat getSecondPoint get closeTo assertThat getFirstPoint get closeTo assertThat getFirstPoint get closeTo assertThat getSecondPoint get closeTo assertThat getSecondPoint get closeTo
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSgroupRepeatUnit()
focal_class.declarator: input            = null
focal_class.original_string: BufferedReader                   input            = null;
focal_class.type: BufferedReader
focal_class.var_name: input
focal_class.declarator: logger           = LoggingToolFactory.createLoggingTool(MDLV2000Reader.class)
focal_class.modifier: private static
focal_class.original_string: private static ILoggingTool      logger           = LoggingToolFactory.createLoggingTool(MDLV2000Reader.class);
focal_class.type: ILoggingTool
focal_class.var_name: logger
focal_class.declarator: forceReadAs3DCoords
focal_class.modifier: private
focal_class.original_string: private BooleanIOSetting         forceReadAs3DCoords;
focal_class.type: BooleanIOSetting
focal_class.var_name: forceReadAs3DCoords
focal_class.declarator: interpretHydrogenIsotopes
focal_class.modifier: private
focal_class.original_string: private BooleanIOSetting         interpretHydrogenIsotopes;
focal_class.type: BooleanIOSetting
focal_class.var_name: interpretHydrogenIsotopes
focal_class.declarator: addStereoElements
focal_class.modifier: private
focal_class.original_string: private BooleanIOSetting         addStereoElements;
focal_class.type: BooleanIOSetting
focal_class.var_name: addStereoElements
focal_class.declarator: TRAILING_SPACE   = Pattern.compile("\\s+$")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern     TRAILING_SPACE   = Pattern.compile("\\s+$");
focal_class.type: Pattern
focal_class.var_name: TRAILING_SPACE
focal_class.declarator: RECORD_DELIMITER = "$$$$"
focal_class.modifier: private static final
focal_class.original_string: private static final String      RECORD_DELIMITER = "$$$$";
focal_class.type: String
focal_class.var_name: RECORD_DELIMITER
focal_class.declarator: PSUEDO_LABELS    = ImmutableSet.<String> builder().add("*").add("A").add("Q")
                                                                .add("L").add("LP").add("R") // XXX: not in spec
                                                                .add("R#").build()
focal_class.modifier: private static final
focal_class.original_string: private static final Set<String> PSUEDO_LABELS    = ImmutableSet.<String> builder().add("*").add("A").add("Q")
                                                                .add("L").add("LP").add("R") // XXX: not in spec
                                                                .add("R#").build();
focal_class.type: Set<String>
focal_class.var_name: PSUEDO_LABELS
focal_class.declarator: PSEUDO_LABELS    = ImmutableSet.<String> builder().add("*").add("A").add("Q")
                                                                .add("L").add("LP").add("R") // XXX: not in spec
                                                                .add("R#").build()
focal_class.modifier: private static final
focal_class.original_string: private static final Set<String> PSEUDO_LABELS    = ImmutableSet.<String> builder().add("*").add("A").add("Q")
                                                                .add("L").add("LP").add("R") // XXX: not in spec
                                                                .add("R#").build();
focal_class.type: Set<String>
focal_class.var_name: PSEUDO_LABELS
focal_class.file: storage/ctab/src/main/java/org/openscience/cdk/io/MDLV2000Reader.java
focal_class.identifier: MDLV2000Reader
focal_class.class_method_signature: MDLV2000Reader.MDLV2000Reader()
focal_class.full_signature: public  MDLV2000Reader()
focal_class.identifier: MDLV2000Reader
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  MDLV2000Reader()
focal_class.class_method_signature: MDLV2000Reader.MDLV2000Reader(InputStream in)
focal_class.full_signature: public  MDLV2000Reader(InputStream in)
focal_class.identifier: MDLV2000Reader
focal_class.modifiers: public
focal_class.parameters: (InputStream in)
focal_class.signature:  MDLV2000Reader(InputStream in)
focal_class.class_method_signature: MDLV2000Reader.MDLV2000Reader(InputStream in, Mode mode)
focal_class.full_signature: public  MDLV2000Reader(InputStream in, Mode mode)
focal_class.identifier: MDLV2000Reader
focal_class.modifiers: public
focal_class.parameters: (InputStream in, Mode mode)
focal_class.signature:  MDLV2000Reader(InputStream in, Mode mode)
focal_class.class_method_signature: MDLV2000Reader.MDLV2000Reader(Reader in)
focal_class.full_signature: public  MDLV2000Reader(Reader in)
focal_class.identifier: MDLV2000Reader
focal_class.modifiers: public
focal_class.parameters: (Reader in)
focal_class.signature:  MDLV2000Reader(Reader in)
focal_class.class_method_signature: MDLV2000Reader.MDLV2000Reader(Reader in, Mode mode)
focal_class.full_signature: public  MDLV2000Reader(Reader in, Mode mode)
focal_class.identifier: MDLV2000Reader
focal_class.modifiers: public
focal_class.parameters: (Reader in, Mode mode)
focal_class.signature:  MDLV2000Reader(Reader in, Mode mode)
focal_class.class_method_signature: MDLV2000Reader.getFormat()
focal_class.full_signature: @Override public IResourceFormat getFormat()
focal_class.identifier: getFormat
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: IResourceFormat
focal_class.signature: IResourceFormat getFormat()
focal_class.class_method_signature: MDLV2000Reader.setReader(Reader input)
focal_class.full_signature: @Override public void setReader(Reader input)
focal_class.identifier: setReader
focal_class.modifiers: @Override public
focal_class.parameters: (Reader input)
focal_class.return: void
focal_class.signature: void setReader(Reader input)
focal_class.class_method_signature: MDLV2000Reader.setReader(InputStream input)
focal_class.full_signature: @Override public void setReader(InputStream input)
focal_class.identifier: setReader
focal_class.modifiers: @Override public
focal_class.parameters: (InputStream input)
focal_class.return: void
focal_class.signature: void setReader(InputStream input)
focal_class.class_method_signature: MDLV2000Reader.accepts(Class<? extends IChemObject> classObject)
focal_class.full_signature: @SuppressWarnings("unchecked") @Override public boolean accepts(Class<? extends IChemObject> classObject)
focal_class.identifier: accepts
focal_class.modifiers: @SuppressWarnings("unchecked") @Override public
focal_class.parameters: (Class<? extends IChemObject> classObject)
focal_class.return: boolean
focal_class.signature: boolean accepts(Class<? extends IChemObject> classObject)
focal_class.class_method_signature: MDLV2000Reader.read(T object)
focal_class.full_signature: @SuppressWarnings("unchecked") @Override public T read(T object)
focal_class.identifier: read
focal_class.modifiers: @SuppressWarnings("unchecked") @Override public
focal_class.parameters: (T object)
focal_class.return: T
focal_class.signature: T read(T object)
focal_class.class_method_signature: MDLV2000Reader.readChemModel(IChemModel chemModel)
focal_class.full_signature: private IChemModel readChemModel(IChemModel chemModel)
focal_class.identifier: readChemModel
focal_class.modifiers: private
focal_class.parameters: (IChemModel chemModel)
focal_class.return: IChemModel
focal_class.signature: IChemModel readChemModel(IChemModel chemModel)
focal_class.class_method_signature: MDLV2000Reader.readChemFile(IChemFile chemFile)
focal_class.full_signature: private IChemFile readChemFile(IChemFile chemFile)
focal_class.identifier: readChemFile
focal_class.modifiers: private
focal_class.parameters: (IChemFile chemFile)
focal_class.return: IChemFile
focal_class.signature: IChemFile readChemFile(IChemFile chemFile)
focal_class.class_method_signature: MDLV2000Reader.newModel(final IAtomContainer container)
focal_class.full_signature: private static IChemModel newModel(final IAtomContainer container)
focal_class.identifier: newModel
focal_class.modifiers: private static
focal_class.parameters: (final IAtomContainer container)
focal_class.return: IChemModel
focal_class.signature: IChemModel newModel(final IAtomContainer container)
focal_class.class_method_signature: MDLV2000Reader.readAtomContainer(IAtomContainer molecule)
focal_class.full_signature: private IAtomContainer readAtomContainer(IAtomContainer molecule)
focal_class.identifier: readAtomContainer
focal_class.modifiers: private
focal_class.parameters: (IAtomContainer molecule)
focal_class.return: IAtomContainer
focal_class.signature: IAtomContainer readAtomContainer(IAtomContainer molecule)
focal_class.class_method_signature: MDLV2000Reader.is3Dfile(String program)
focal_class.full_signature: private boolean is3Dfile(String program)
focal_class.identifier: is3Dfile
focal_class.modifiers: private
focal_class.parameters: (String program)
focal_class.return: boolean
focal_class.signature: boolean is3Dfile(String program)
focal_class.class_method_signature: MDLV2000Reader.applyMDLValenceModel(IAtom atom, int explicitValence, int unpaired)
focal_class.full_signature: private void applyMDLValenceModel(IAtom atom, int explicitValence, int unpaired)
focal_class.identifier: applyMDLValenceModel
focal_class.modifiers: private
focal_class.parameters: (IAtom atom, int explicitValence, int unpaired)
focal_class.return: void
focal_class.signature: void applyMDLValenceModel(IAtom atom, int explicitValence, int unpaired)
focal_class.class_method_signature: MDLV2000Reader.fixHydrogenIsotopes(IAtomContainer molecule, IsotopeFactory isotopeFactory)
focal_class.full_signature: private void fixHydrogenIsotopes(IAtomContainer molecule, IsotopeFactory isotopeFactory)
focal_class.identifier: fixHydrogenIsotopes
focal_class.modifiers: private
focal_class.parameters: (IAtomContainer molecule, IsotopeFactory isotopeFactory)
focal_class.return: void
focal_class.signature: void fixHydrogenIsotopes(IAtomContainer molecule, IsotopeFactory isotopeFactory)
focal_class.class_method_signature: MDLV2000Reader.close()
focal_class.full_signature: @Override public void close()
focal_class.identifier: close
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void close()
focal_class.class_method_signature: MDLV2000Reader.initIOSettings()
focal_class.full_signature: private void initIOSettings()
focal_class.identifier: initIOSettings
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void initIOSettings()
focal_class.class_method_signature: MDLV2000Reader.customizeJob()
focal_class.full_signature: public void customizeJob()
focal_class.identifier: customizeJob
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void customizeJob()
focal_class.class_method_signature: MDLV2000Reader.removeNonDigits(String input)
focal_class.full_signature: private String removeNonDigits(String input)
focal_class.identifier: removeNonDigits
focal_class.modifiers: private
focal_class.parameters: (String input)
focal_class.return: String
focal_class.signature: String removeNonDigits(String input)
focal_class.class_method_signature: MDLV2000Reader.readAtomFast(String line, IChemObjectBuilder builder, int lineNum)
focal_class.full_signature:  IAtom readAtomFast(String line, IChemObjectBuilder builder, int lineNum)
focal_class.identifier: readAtomFast
focal_class.parameters: (String line, IChemObjectBuilder builder, int lineNum)
focal_class.return: IAtom
focal_class.signature: IAtom readAtomFast(String line, IChemObjectBuilder builder, int lineNum)
focal_class.class_method_signature: MDLV2000Reader.readAtomFast(String line, IChemObjectBuilder builder, Map<IAtom,Integer> parities, int lineNum, boolean isQuery)
focal_class.full_signature:  IAtom readAtomFast(String line, IChemObjectBuilder builder, Map<IAtom,Integer> parities, int lineNum, boolean isQuery)
focal_class.identifier: readAtomFast
focal_class.parameters: (String line, IChemObjectBuilder builder, Map<IAtom,Integer> parities, int lineNum, boolean isQuery)
focal_class.return: IAtom
focal_class.signature: IAtom readAtomFast(String line, IChemObjectBuilder builder, Map<IAtom,Integer> parities, int lineNum, boolean isQuery)
focal_class.class_method_signature: MDLV2000Reader.readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum)
focal_class.full_signature:  IBond readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum)
focal_class.identifier: readBondFast
focal_class.parameters: (String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum)
focal_class.return: IBond
focal_class.signature: IBond readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum)
focal_class.class_method_signature: MDLV2000Reader.readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum,
                         boolean isQuery)
focal_class.full_signature:  IBond readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum,
                         boolean isQuery)
focal_class.identifier: readBondFast
focal_class.parameters: (String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum,
                         boolean isQuery)
focal_class.return: IBond
focal_class.signature: IBond readBondFast(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence, int lineNum,
                         boolean isQuery)
focal_class.class_method_signature: MDLV2000Reader.readPropertiesFast(final BufferedReader input, final IAtomContainer container, final int nAtoms)
focal_class.full_signature:  void readPropertiesFast(final BufferedReader input, final IAtomContainer container, final int nAtoms)
focal_class.identifier: readPropertiesFast
focal_class.parameters: (final BufferedReader input, final IAtomContainer container, final int nAtoms)
focal_class.return: void
focal_class.signature: void readPropertiesFast(final BufferedReader input, final IAtomContainer container, final int nAtoms)
focal_class.class_method_signature: MDLV2000Reader.ensureSgroup(Map<Integer, Sgroup> map, int idx)
focal_class.full_signature: private Sgroup ensureSgroup(Map<Integer, Sgroup> map, int idx)
focal_class.identifier: ensureSgroup
focal_class.modifiers: private
focal_class.parameters: (Map<Integer, Sgroup> map, int idx)
focal_class.return: Sgroup
focal_class.signature: Sgroup ensureSgroup(Map<Integer, Sgroup> map, int idx)
focal_class.class_method_signature: MDLV2000Reader.toStereo(final int stereo, final int type)
focal_class.full_signature: private IBond.Stereo toStereo(final int stereo, final int type)
focal_class.identifier: toStereo
focal_class.modifiers: private
focal_class.parameters: (final int stereo, final int type)
focal_class.return: IBond.Stereo
focal_class.signature: IBond.Stereo toStereo(final int stereo, final int type)
focal_class.class_method_signature: MDLV2000Reader.length(final String str)
focal_class.full_signature: static int length(final String str)
focal_class.identifier: length
focal_class.modifiers: static
focal_class.parameters: (final String str)
focal_class.return: int
focal_class.signature: int length(final String str)
focal_class.class_method_signature: MDLV2000Reader.createAtom(String symbol, IChemObjectBuilder builder, int lineNum)
focal_class.full_signature: private IAtom createAtom(String symbol, IChemObjectBuilder builder, int lineNum)
focal_class.identifier: createAtom
focal_class.modifiers: private
focal_class.parameters: (String symbol, IChemObjectBuilder builder, int lineNum)
focal_class.return: IAtom
focal_class.signature: IAtom createAtom(String symbol, IChemObjectBuilder builder, int lineNum)
focal_class.class_method_signature: MDLV2000Reader.isPseudoElement(final String symbol)
focal_class.full_signature: static boolean isPseudoElement(final String symbol)
focal_class.identifier: isPseudoElement
focal_class.modifiers: static
focal_class.parameters: (final String symbol)
focal_class.return: boolean
focal_class.signature: boolean isPseudoElement(final String symbol)
focal_class.class_method_signature: MDLV2000Reader.readMDLCoordinate(final String line, int offset)
focal_class.full_signature:  double readMDLCoordinate(final String line, int offset)
focal_class.identifier: readMDLCoordinate
focal_class.parameters: (final String line, int offset)
focal_class.return: double
focal_class.signature: double readMDLCoordinate(final String line, int offset)
focal_class.class_method_signature: MDLV2000Reader.toCharge(final char c)
focal_class.full_signature: private static int toCharge(final char c)
focal_class.identifier: toCharge
focal_class.modifiers: private static
focal_class.parameters: (final char c)
focal_class.return: int
focal_class.signature: int toCharge(final char c)
focal_class.class_method_signature: MDLV2000Reader.sign(final char c)
focal_class.full_signature: private static int sign(final char c)
focal_class.identifier: sign
focal_class.modifiers: private static
focal_class.parameters: (final char c)
focal_class.return: int
focal_class.signature: int sign(final char c)
focal_class.class_method_signature: MDLV2000Reader.toInt(final char c)
focal_class.full_signature: private static int toInt(final char c)
focal_class.identifier: toInt
focal_class.modifiers: private static
focal_class.parameters: (final char c)
focal_class.return: int
focal_class.signature: int toInt(final char c)
focal_class.class_method_signature: MDLV2000Reader.readUInt(final String line, int index, int digits)
focal_class.full_signature: private static int readUInt(final String line, int index, int digits)
focal_class.identifier: readUInt
focal_class.modifiers: private static
focal_class.parameters: (final String line, int index, int digits)
focal_class.return: int
focal_class.signature: int readUInt(final String line, int index, int digits)
focal_class.class_method_signature: MDLV2000Reader.readMolfileInt(final String line, final int index)
focal_class.full_signature: private static int readMolfileInt(final String line, final int index)
focal_class.identifier: readMolfileInt
focal_class.modifiers: private static
focal_class.parameters: (final String line, final int index)
focal_class.return: int
focal_class.signature: int readMolfileInt(final String line, final int index)
focal_class.class_method_signature: MDLV2000Reader.label(final IAtomContainer container, final int index, final String label)
focal_class.full_signature: static void label(final IAtomContainer container, final int index, final String label)
focal_class.identifier: label
focal_class.modifiers: static
focal_class.parameters: (final IAtomContainer container, final int index, final String label)
focal_class.return: void
focal_class.signature: void label(final IAtomContainer container, final int index, final String label)
focal_class.class_method_signature: MDLV2000Reader.readAtomSlow(String line, IChemObjectBuilder builder, int linecount)
focal_class.full_signature: private IAtom readAtomSlow(String line, IChemObjectBuilder builder, int linecount)
focal_class.identifier: readAtomSlow
focal_class.modifiers: private
focal_class.parameters: (String line, IChemObjectBuilder builder, int linecount)
focal_class.return: IAtom
focal_class.signature: IAtom readAtomSlow(String line, IChemObjectBuilder builder, int linecount)
focal_class.class_method_signature: MDLV2000Reader.readBondSlow(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence,
              int linecount)
focal_class.full_signature: private IBond readBondSlow(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence,
              int linecount)
focal_class.identifier: readBondSlow
focal_class.modifiers: private
focal_class.parameters: (String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence,
              int linecount)
focal_class.return: IBond
focal_class.signature: IBond readBondSlow(String line, IChemObjectBuilder builder, IAtom[] atoms, int[] explicitValence,
              int linecount)
focal_class.class_method_signature: MDLV2000Reader.readPropertiesSlow(BufferedReader input, IAtomContainer container, int nAtoms, int linecount)
focal_class.full_signature: private void readPropertiesSlow(BufferedReader input, IAtomContainer container, int nAtoms, int linecount)
focal_class.identifier: readPropertiesSlow
focal_class.modifiers: private
focal_class.parameters: (BufferedReader input, IAtomContainer container, int nAtoms, int linecount)
focal_class.return: void
focal_class.signature: void readPropertiesSlow(BufferedReader input, IAtomContainer container, int nAtoms, int linecount)
focal_class.class_method_signature: MDLV2000Reader.readNonStructuralData(final BufferedReader input, final IAtomContainer container)
focal_class.full_signature: static void readNonStructuralData(final BufferedReader input, final IAtomContainer container)
focal_class.identifier: readNonStructuralData
focal_class.modifiers: static
focal_class.parameters: (final BufferedReader input, final IAtomContainer container)
focal_class.return: void
focal_class.signature: void readNonStructuralData(final BufferedReader input, final IAtomContainer container)
focal_class.class_method_signature: MDLV2000Reader.dataHeader(final String line)
focal_class.full_signature: static String dataHeader(final String line)
focal_class.identifier: dataHeader
focal_class.modifiers: static
focal_class.parameters: (final String line)
focal_class.return: String
focal_class.signature: String dataHeader(final String line)
focal_class.class_method_signature: MDLV2000Reader.endOfRecord(final String line)
focal_class.full_signature: private static boolean endOfRecord(final String line)
focal_class.identifier: endOfRecord
focal_class.modifiers: private static
focal_class.parameters: (final String line)
focal_class.return: boolean
focal_class.signature: boolean endOfRecord(final String line)
focal_class.superclass: extends DefaultChemObjectReader
focal_method.body: @SuppressWarnings("unchecked")
      @Override
      public <T extends IChemObject> T read(T object) throws CDKException {
          if (object instanceof IAtomContainer) {
              return (T) readAtomContainer((IAtomContainer) object);
          } else if (object instanceof IChemFile) {
              return (T) readChemFile((IChemFile) object);
          } else if (object instanceof IChemModel) {
              return (T) readChemModel((IChemModel) object);
          } else {
              throw new CDKException("Only supported are ChemFile and Molecule.");
          }
      }
focal_method.class_method_signature: MDLV2000Reader.read(T object)
focal_method.full_signature: @SuppressWarnings("unchecked") @Override public T read(T object)
focal_method.identifier: read
focal_method.invocations: readAtomContainer readChemFile readChemModel
focal_method.modifiers: @SuppressWarnings("unchecked") @Override public
focal_method.parameters: (T object)
focal_method.return: T
focal_method.signature: T read(T object)