### Question:
CDKMCS { public static List<List<CDKRMap>> getSubgraphAtomsMaps(IAtomContainer g1, IAtomContainer g2, boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType) throws CDKException { List<CDKRMap> list = checkSingleAtomCases(g1, g2); if (list == null) { return makeAtomsMapsOfBondsMaps( getSubgraphMaps(g1, g2, shouldMatchBonds, shouldMatchRings, matchAtomType), g1, g2); } else { List<List<CDKRMap>> atomsMap = new ArrayList<>(); atomsMap.add(list); return atomsMap; } }  static boolean isIsomorph(IAtomContainer g1, IAtomContainer g2, boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<List<CDKRMap>> getIsomorphMaps(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<List<CDKRMap>> getSubgraphMaps(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<CDKRMap> getSubgraphMap(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<List<CDKRMap>> getSubgraphAtomsMaps(IAtomContainer g1,
            IAtomContainer g2, boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static boolean isSubgraph(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<IAtomContainer> getOverlaps(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static BitSet getBitSet(IAtomContainer ac); static CDKRGraph buildRGraph(IAtomContainer g1, IAtomContainer g2,
            boolean shouldMatchBonds, boolean shouldMatchRings, boolean matchAtomType); static List<List<CDKRMap>> search(IAtomContainer g1, IAtomContainer g2, BitSet c1,
            BitSet c2, boolean findAllStructure, boolean findAllMap,
            boolean shouldMatchBonds, boolean shouldMatchRings,
            boolean matchAtomType); static boolean isTimeout();  }### Answer:
@Test public void testGetSubgraphAtomsMaps_IAtomContainer() throws java.lang.Exception { int[] result1 = {6, 5, 7, 8, 0}; int[] result2 = {3, 4, 2, 1, 0}; IAtomContainer mol = MoleculeFactory.makeIndole(); IAtomContainer frag1 = MoleculeFactory.makePyrrole(); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(frag1); CDKHydrogenAdder adder = CDKHydrogenAdder.getInstance(mol.getBuilder()); adder.addImplicitHydrogens(mol); adder = CDKHydrogenAdder.getInstance(frag1.getBuilder()); adder.addImplicitHydrogens(frag1); ExtAtomContainerManipulator.aromatizeDayLight(mol); ExtAtomContainerManipulator.aromatizeDayLight(frag1); List<List<CDKRMap>> list = CDKMCS.getSubgraphAtomsMaps(mol, frag1, true, false, false); List<CDKRMap> first = list.get(0); for (int i = 0; i < first.size(); i++) { CDKRMap rmap = first.get(i); Assert.assertEquals(rmap.getId1(), result1[i]); Assert.assertEquals(rmap.getId2(), result2[i]); } }