protected void testPower() {
        if (!(this instanceof ITrackPowered))
            return;
        int i = tileEntity.xCoord;
        int j = tileEntity.yCoord;
        int k = tileEntity.zCoord;
        ITrackPowered r = (ITrackPowered) this;
        int meta = tileEntity.getBlockMetadata();
        boolean powered = getWorld().isBlockIndirectlyGettingPowered(i, j, k) || testPowerPropagation(getWorld(), i, j, k, getTrackSpec(), meta, r.getPowerPropagation());
        if (powered != r.isPowered()) {
            r.setPowered(powered);
            Block blockTrack = getBlock();
            getWorld().notifyBlocksOfNeighborChange(i, j, k, blockTrack);
            getWorld().notifyBlocksOfNeighborChange(i, j - 1, k, blockTrack);
            if (meta == 2 || meta == 3 || meta == 4 || meta == 5)
                getWorld().notifyBlocksOfNeighborChange(i, j + 1, k, blockTrack);
            sendUpdateToClient();
            // System.out.println("Setting power [" + i + ", " + j + ", " + k + "]");
        }
    }