if (p >= 0 && slash < s.length && contents[p] instanceof Tree)
return ((Tree) contents[p]).addFile(s, slash + 1);
final byte[] newName = substring(s, offset, slash);
if (p >= 0)
throw new EntryExistsException(RawParseUtils.decode(newName));
else if (slash < s.length) {
final Tree t = new Tree(this, newName);
insertEntry(p, t);
return t.addFile(s, slash + 1);
} else {