public boolean matches(byte[] code)
    {
        return isFullMatch(code, code.length);
    }
@Test
    void testMatches()
    {
        byte[] startBytes1 = { 0x00 };
        byte[] endBytes1 = { (byte) 0xA0 };
        CodespaceRange range1 = new CodespaceRange(startBytes1, endBytes1);
        // check start and end value
        assertTrue(range1.matches(new byte[] { 0x00 }));
        assertTrue(range1.matches(new byte[] { (byte) 0xA0 }));
        // check any value within range
        assertTrue(range1.matches(new byte[] { 0x10 }));
        // check first value out of range
        assertFalse(range1.matches(new byte[] { (byte) 0xA1 }));
        // check any value out of range
        assertFalse(range1.matches(new byte[] { (byte) 0xD0 }));
        // check any value with a different code length
        assertFalse(range1.matches(new byte[] { 0x00, 0x10 }));

        byte[] startBytes2 = { (byte) 0x81, 0x40 };
        byte[] endBytes2 = { (byte) 0x9F, (byte) 0xFC };
        CodespaceRange range2 = new CodespaceRange(startBytes2, endBytes2);
        // check lower start and end value
        assertTrue(range2.matches(new byte[] { (byte) 0x81, 0x40 }));
        assertTrue(range2.matches(new byte[] { (byte) 0x81, (byte) 0xFC }));
        // check higher start and end value
        assertTrue(range2.matches(new byte[] { (byte) 0x81, 0x40 }));
        assertTrue(range2.matches(new byte[] { (byte) 0x9F, 0x40 }));
        // check any value within lower range
        assertTrue(range2.matches(new byte[] { (byte) 0x81, 0x65 }));
        // check any value within higher range
        assertTrue(range2.matches(new byte[] { (byte) 0x90, 0x40 }));
        // check first value out of lower range
        assertFalse(range2.matches(new byte[] { (byte) 0x81, (byte) 0xFD }));
        // check first value out of higher range
        assertFalse(range2.matches(new byte[] { (byte) 0xA0, 0x40 }));
        // check any value out of lower range
        assertFalse(range2.matches(new byte[] { (byte) 0x81, 0x20 }));
        // check any value out of higher range
        assertFalse(range2.matches(new byte[] { 0x10, 0x40 }));
        // check value between start and end but not within the rectangular
        assertFalse(range2.matches(new byte[] { (byte) 0x82, 0x20 }));
        // check any value with a different code length
        assertFalse(range2.matches(new byte[] { 0x00 }));
    }