public override RangeNode Distro(IList <byte> key, int keyoffset, int keylength) { RangeNode rn; if (tree.child_glyphs == null) { rn.MajorID = tree.iMajorId; rn.MinorID = tree.iMinorId; return(rn); } if (keylength != m_iSampleKeyLength) { throw new Exception("Key length not of expected size (expected " + m_iSampleKeyLength.ToString() + ", got " + keylength.ToString() + ")"); } if (keyoffset + keylength > key.Count) { throw new Exception("Key buffer of size " + key.Count.ToString() + " not big enough to hold key of length " + keylength.ToString() + " at offset " + keyoffset.ToString()); } if (keyoffset < 0 || keylength < 0) { throw new Exception("Key buffer of size " + key.Count.ToString() + " not big enough to hold key of BAD length " + keylength.ToString() + " at BAD offset " + keyoffset.ToString()); } GlyphNode gn = tree.FindWord(tree, key, keyoffset, keylength); rn.MajorID = gn.iMajorId; rn.MinorID = gn.iMinorId; return(rn); }