code: @Override
      public DescriptorValue calculate(IAtomContainer atomContainer) {
          IAtomContainer local;
          if (addlp) {
              try {
                  local = (IAtomContainer) atomContainer.clone();
                  LonePairElectronChecker lpcheck = new LonePairElectronChecker();
                  lpcheck.saturate(local);
              } catch (CloneNotSupportedException e) {
                  return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new DoubleResult(
                          Double.NaN), getDescriptorNames(), e);
              } catch (CDKException e) {
                  return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new DoubleResult(
                          Double.NaN), getDescriptorNames(), e);
              }
  
          } else
              local = atomContainer;
  
          DoubleResult value;
          try {
              value = new DoubleResult(((DoubleArrayResult) calculatePlus(local).getValue()).get(0));
          } catch (CDKException e) {
              return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new DoubleResult(
                      Double.NaN), getDescriptorNames(), e);
          }
          return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), value,
                  getDescriptorNames());
      }
docs: It calculates the first ionization energy of a molecule.
  
  @param  atomContainer     AtomContainer
  @return                   The first ionization energy