[I happened to notice this while reading the code. Offhand it looks to me like a potential bug?]
The signInOctetStream(OutputStream) method checks getInclusiveNamespaces() and uses its value to select between overloaded canonicalizeSubtree(...) methods. All good.
By contrast, the getCanonicalizedOctetStream() method ignores getInclusiveNamespaces() and always just uses the canonicalizeSubtree(Node) method.
I'm guessing that getCanonicalizedOctetStream() should use the same logic that signInOctetStream() does, but perhaps I'm missing something.
Perhaps getCanonicalizedOctetSteam() doesn't actually get used and so this is mostly moot? [I came to this from OpenSAML, which definitely uses signInOctetStream() but, I believe, doesn't use getCanonicalizedOctetSteam()].