final Element messageElement = (Element)messageElements.item(messageIndex);
// ID
final MessageID messageID = MessageID.construct(messageElement.getAttribute("ID"));
messageID.throwIfAuthorDoesNotMatch(author); // Duplicate check to prevent severe breakage, also done in message list constructor.
// URI
final FreenetURI messageURI = new FreenetURI(messageElement.getAttribute("FreenetURI")); // TODO: FreenetURI won't throw if too long