code: @Override
      public boolean isSubgraph() {
  
          IAtomContainer reactant = getReactantMolecule();
          IAtomContainer product = getProductMolecule();
  
          float mappingSize = 0;
          if (firstSolution != null && !firstSolution.isEmpty()) {
              mappingSize = firstSolution.size();
          } else {
              return false;
          }
          int sourceAtomCount = reactant.getAtomCount();
          int targetAtomCount = product.getAtomCount();
          if (removeHydrogen) {
              sourceAtomCount -= getHCount(reactant);
              targetAtomCount -= getHCount(product);
          }
          if (mappingSize == sourceAtomCount && mappingSize <= targetAtomCount) {
              if (!getFirstBondMap().isEmpty() && getFirstBondMap().size() == reactant.getBondCount()) {
                  return true;
              } else if (mappingSize == 1) {
                  return true;
              }
          }
          return false;
      }
docs: {@inheritDoc}