code: @Override
      public DescriptorValue calculate(IAtomContainer atomContainer) {
  
          if (tools.isEmpty()) {
              throw new IllegalStateException("descriptor is not initalised, invoke 'initalise' first");
          }
  
          atomContainer = clone(atomContainer);
          for (IAtom atom : atomContainer.atoms()) {
              if (atom.getImplicitHydrogenCount() == null)
                  atom.setImplicitHydrogenCount(0);
          }
  
          int count = 0;
          for (SmartsPattern ptrn : tools) {
              count += ptrn.matchAll(atomContainer).count();
          }
          return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new IntegerResult(
                  count), getDescriptorNames());
      }
docs: {@inheritDoc}