### Question:
RegionRouteTable { public void splitRegion(final long leftId, final Region right) { Requires.requireNonNull(right, "right"); Requires.requireNonNull(right.getRegionEpoch(), "right.regionEpoch"); final StampedLock stampedLock = this.stampedLock; final long stamp = stampedLock.writeLock(); try { final Region left = this.regionTable.get(leftId); Requires.requireNonNull(left, "left"); final byte[] leftStartKey = BytesUtil.nullToEmpty(left.getStartKey()); final byte[] leftEndKey = left.getEndKey(); final long rightId = right.getId(); final byte[] rightStartKey = right.getStartKey(); final byte[] rightEndKey = right.getEndKey(); Requires.requireNonNull(rightStartKey, "rightStartKey"); Requires.requireTrue(BytesUtil.compare(leftStartKey, rightStartKey) < 0, "leftStartKey must < rightStartKey"); if (leftEndKey == null || rightEndKey == null) { Requires.requireTrue(leftEndKey == rightEndKey, "leftEndKey must == rightEndKey"); } else { Requires.requireTrue(BytesUtil.compare(leftEndKey, rightEndKey) == 0, "leftEndKey must == rightEndKey"); Requires.requireTrue(BytesUtil.compare(rightStartKey, rightEndKey) < 0, "rightStartKey must < rightEndKey"); } final RegionEpoch leftEpoch = left.getRegionEpoch(); leftEpoch.setVersion(leftEpoch.getVersion() + 1); left.setEndKey(rightStartKey); this.regionTable.put(rightId, right.copy()); this.rangeTable.put(rightStartKey, rightId); } finally { stampedLock.unlockWrite(stamp); } }  Region getRegionById(final long regionId); void addOrUpdateRegion(final Region region); void splitRegion(final long leftId, final Region right); boolean removeRegion(final long regionId); Region findRegionByKey(final byte[] key); Map<Region, List<byte[]>> findRegionsByKeys(final List<byte[]> keys); Map<Region, List<KVEntry>> findRegionsByKvEntries(final List<KVEntry> kvEntries); List<Region> findRegionsByKeyRange(final byte[] startKey, final byte[] endKey); byte[] findStartKeyOfNextRegion(final byte[] key);  }### Answer:
@Test public void splitRegionTest() { RegionRouteTable table = new RegionRouteTable(); Region region = makeRegion(-1, null, null); table.addOrUpdateRegion(region); Region newRegion = makeRegion(1, BytesUtil.writeUtf8("t"), null); table.splitRegion(-1, newRegion); Region found = table.findRegionByKey(BytesUtil.writeUtf8("a")); assertEquals(-1, found.getId()); found = table.findRegionByKey(BytesUtil.writeUtf8("w")); assertEquals(1, found.getId()); }