public static SVNLocationEntry getCopyInheritance(File reposRootDir, FSParentPath child, String txnID) throws SVNException {
public static SVNLocationEntry getCopyInheritance(File reposRootDir, FSParentPath child, String txnID, FSRevisionNodePool pool) throws SVNException {
	public static SVNLocationEntry getCopyInheritance(File reposRootDir, FSParentPath child, String txnID) throws SVNException {        /* Make some assertions about the function input. */        if(child == null || child.getParent() == null || !FSID.isTxn(txnID)){			SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.UNKNOWN, "FATAL error: invalid parameters");            SVNErrorManager.error(err);					}		FSID childID = child.getRevNode().getId();		FSID parentID = child.getParent().getRevNode().getId();		FSID copyrootID = new FSID();		String childCopyID = childID.getCopyID();		String parentCopyID = parentID.getCopyID();		FSRevisionNode copyrootRoot = null;		FSRevisionNode copyrootNode = null;								//If this child is already mutable, we have nothing to do		if(childID.isTxn()){			return new SVNLocationEntry(FSParentPath.COPY_ID_INHERIT_SELF, null);		}		//From this point on, we'll assume that the child will just take	    //its copy ID from its parent		SVNLocationEntry constrEntry = new SVNLocationEntry(FSParentPath.COPY_ID_INHERIT_PARENT, null);				//Special case: if the child's copy ID is '0', use the parent's	    //copy ID		if(childCopyID.compareTo("0") == 0){			return constrEntry;		}				//Compare the copy IDs of the child and its parent.  If they are	    //the same, then the child is already on the same branch as the	    //parent, and should use the same mutability copy ID that the	    //parent will use		if(childCopyID.compareTo(parentCopyID) == 0){			return constrEntry;		}			    //If the child is on the same branch that the parent is on, the	    //child should just use the same copy ID that the parent would use.	    //Else, the child needs to generate a new copy ID to use should it	    //need to be made mutable.  We will claim that child is on the same	    //branch as its parent if the child itself is not a branch point,	    //or if it is a branch point that we are accessing via its original	    //copy destination path		SVNLocationEntry copyrootEntry = new SVNLocationEntry(child.getRevNode().getCopyRootRevision(), child.getRevNode().getCopyRootPath());        copyrootRoot = FSReader.getRootRevNode(reposRootDir, copyrootEntry.getRevision());        copyrootNode = FSReader.getRevisionNode(reposRootDir, copyrootEntry.getPath(), copyrootRoot, 0);        copyrootID = copyrootNode.getId();		if(FSID.compareIds(copyrootID, childID) == -1){			return copyrootEntry;		}			    //Determine if we are looking at the child via its original path or	    //as a subtree item of a copied tree		if(child.getRevNode().getCreatedPath().compareTo(child.constructParentPath()) == 0){			return new SVNLocationEntry(FSParentPath.COPY_ID_INHERIT_SELF, null);		}		return new SVNLocationEntry(FSParentPath.COPY_ID_INHERIT_NEW, child.getRevNode().getCreatedPath());	}	