public function desiccate(Tree $tree)
{
$writer = new StringWriter();
foreach ($tree->getNodes() as $node) {
$writer->writeString8($node->getOctalModeString());
$writer->writeString8(' ');
$writer->writeString8($node->getName());
$writer->writeString8("");
$sha = $node->getRelatedObject()->getSha();
if (strlen($sha) != 40) {
throw new NotPersistedException("Object referred to by node named " . $node->getName() . " is not persisted yet.");
}
$writer->writeHHex($sha);
}
$data = $writer->toString();
return new RawObject('tree', $data);
}