code: @Override
      public IRenderingElement generate(IAtomContainer container, RendererModel model) {
          ElementGroup group = new ElementGroup();
  
          // TODO : put into RendererModel
          final double SCREEN_RADIUS = 1.0;
          // separation between centers
          final double SCREEN_SEPARATION = 2.5;
          final Color RADICAL_COLOR = Color.BLACK;
  
          // XXX : is this the best option?
          final double ATOM_RADIUS = ((AtomRadius) model.getParameter(AtomRadius.class)).getValue();
  
          double scale = model.getParameter(Scale.class).getValue();
          double modelAtomRadius = ATOM_RADIUS / scale;
          double modelPointRadius = SCREEN_RADIUS / scale;
          double modelSeparation = SCREEN_SEPARATION / scale;
          for (ILonePair lonePair : container.lonePairs()) {
              IAtom atom = lonePair.getAtom();
              Point2d point = atom.getPoint2d();
              int align = GeometryUtil.getBestAlignmentForLabelXY(container, atom);
              double xRadius = point.x;
              double yRadius = point.y;
              double diffx = 0;
              double diffy = 0;
              if (align == 1) {
                  xRadius += modelAtomRadius;
                  diffy += modelSeparation;
              } else if (align == -1) {
                  xRadius -= modelAtomRadius;
                  diffy += modelSeparation;
              } else if (align == 2) {
                  yRadius -= modelAtomRadius;
                  diffx += modelSeparation;
              } else if (align == -2) {
                  yRadius += modelAtomRadius;
                  diffx += modelSeparation;
              }
              group.add(new OvalElement(xRadius + diffx, yRadius + diffy, modelPointRadius, true, RADICAL_COLOR));
              group.add(new OvalElement(xRadius - diffx, yRadius - diffy, modelPointRadius, true, RADICAL_COLOR));
          }
          return group;
      }
docs: {@inheritDoc}