private void WriteIdentifiersAndLengths(EmberId outer, EmberId inner, int? innerLength)
{
// The outer length is the inner length + the length of the inner length field + the length of the inner
// token (for definite lengths the inner token is always universal and therefore one byte).
int innerShift;
var innerLengthLength = GetLengthLength(innerLength, out innerShift);
var outerLength = innerLength + innerLengthLength + 1;
int outerShift;
var outerLengthLength = GetLengthLength(outerLength, out outerShift);
WriteIdentifier(this.writeBuffer, outer);
WriteLength(this.writeBuffer, outerLength, outerShift, outerLengthLength);
WriteIdentifier(this.writeBuffer, inner);
WriteLength(this.writeBuffer, innerLength, innerShift, innerLengthLength);
}
}