code: public boolean effectiveCharges(IAtomContainer mol) {
  
          int[][] adjList = mol.getProperty(MMFF_ADJLIST_CACHE);
          GraphUtil.EdgeToBondMap edgeMap = mol.getProperty(MMFF_EDGEMAP_CACHE);
  
          if (adjList == null || edgeMap == null)
              throw new IllegalArgumentException("Invoke assignAtomTypes first.");
  
          primaryCharges(mol, adjList, edgeMap);
          effectiveCharges(mol, adjList);
  
          return true;
      }
docs: Assign the effective formal charges used by MMFF in calculating the
  final partial charge values. Atom types must be assigned first. All
  existing charges are cleared.
  
  @param mol molecule
  @return charges were assigned
  @see #partialCharges(IAtomContainer)
  @see #assignAtomTypes(IAtomContainer)