code: private static PharmacophoreQuery processPharmacophoreElement(Element e, HashMap<String, String> global)
              throws CDKException {
          PharmacophoreQuery ret = new PharmacophoreQuery();
          ret.setProperty("description", e.getAttributeValue("description"));
          ret.setTitle(e.getAttributeValue("name"));
  
          // first get any local group definitions
          HashMap<String, String> local = getGroupDefinitions(e);
  
          // now lets look at the constraints
          Elements children = e.getChildElements();
          for (int i = 0; i < children.size(); i++) {
              Element child = children.get(i);
              if (child.getQualifiedName().equals("distanceConstraint")) {
                  processDistanceConstraint(child, local, global, ret);
              } else if (child.getQualifiedName().equals("angleConstraint")) {
                  processAngleConstraint(child, local, global, ret);
              }
          }
          return ret;
      }
docs: /* process a single pcore definition