protected void validatePairings() {
        if (!pairingsToTestNext.isEmpty()) {
            pairingsToTestNext.retainAll(pairings);
            for (WorldCoordinate coord : pairingsToTestNext) {
                int x = coord.x;
                int y = coord.y;
                int z = coord.z;

                World world = tile.getWorldObj();
                if (!world.blockExists(x, y, z))
                    continue;

                Block block = world.getBlock(x, y, z);
                int meta = world.getBlockMetadata(x, y, z);
                if (!block.hasTileEntity(meta)) {
                    clearPairing(coord);
                    continue;
                }

                TileEntity target = world.getTileEntity(x, y, z);
                if (target != null && !isValidPair(coord, target))
                    clearPairing(coord);
            }
            pairingsToTestNext.clear();
        }
        cleanPairings();
        for (WorldCoordinate coord : pairings) {
            getPairAt(coord);
        }
        pairingsToTestNext.addAll(pairingsToTest);
        pairingsToTest.clear();
    }