if (prefix == null) { sig.addPath(path); } else { sig.addPath(prefix.getRelative(path)); }
sig.addPath(toAdd);
    private Signature getSignature(ObjectType type, SQLBlock block,                                   Path prefix, ObjectType from) {        Signature sig = new Signature(getSource(type, block, prefix));        for (Iterator it = block.getPaths().iterator(); it.hasNext(); ) {            Path path = (Path) it.next();	    try {		if (prefix == null) {		    sig.addPath(path);		} else {		    sig.addPath(prefix.getRelative(path));		}	    } catch (NoSuchPathException e) {		throw new MetadataException(block, "mapping not in signature");	    }        }        if (from != null) {            for (Iterator it = from.getKeyProperties().iterator();                 it.hasNext(); ) {                Property key = (Property) it.next();                Parameter p = new Parameter                    (key.getType(), Path.get(":" + key.getName()));                sig.addParameter(p);		p = new Parameter		    (key.getType(), Path.get(key.getName()));		sig.addParameter(p);            }        }        return sig;    }