code: package com.sun.xml.xsom.impl;
  
  import com.sun.xml.xsom.XSIdentityConstraint;
  import com.sun.xml.xsom.XSXPath;
  import com.sun.xml.xsom.XmlString;
  import com.sun.xml.xsom.impl.parser.SchemaDocumentImpl;
  import com.sun.xml.xsom.visitor.XSFunction;
  import com.sun.xml.xsom.visitor.XSVisitor;
  import org.xml.sax.Locator;
  
  /**
   * @author Kohsuke Kawaguchi
   */
  public class XPathImpl extends ComponentImpl implements XSXPath {
      private XSIdentityConstraint parent;
      private final XmlString xpath;
  
      public XPathImpl(SchemaDocumentImpl _owner, AnnotationImpl _annon, Locator _loc, ForeignAttributesImpl fa, XmlString xpath) {
          super(_owner, _annon, _loc, fa);
          this.xpath = xpath;
      }
  
      public void setParent(XSIdentityConstraint parent) {
          this.parent = parent;
      }
  
      public XSIdentityConstraint getParent() {
          return parent;
      }
  
      public XmlString getXPath() {
          return xpath;
      }
  
      public void visit(XSVisitor visitor) {
          visitor.xpath(this);
      }
  
      public <T> T apply(XSFunction<T> function) {
          return function.xpath(this);
      }
  }
  