volume.readClusters(actCluster, dst, actDstOffset, count);
if (actCluster == 0) {  Arrays.fill(dst, actDstOffset, actDstOffset + count, (byte) 0); } else { volume.readClusters(actCluster, dst, actDstOffset, count); }
    public int readClusters(long vcn, byte[] dst, int dstOffset,            int nrClusters, int clusterSize, NTFSVolume volume) throws IOException {        final long myFirstVcn = getFirstVcn();        final int myLength = getLength();        final long myLastVcn = myFirstVcn + myLength - 1;                final long reqLastVcn = vcn + nrClusters - 1;                log.debug("me:" + myFirstVcn + "-" + myLastVcn + ", req:" + vcn + "-" + reqLastVcn);                if ((vcn > myLastVcn) || (myFirstVcn > reqLastVcn)) {             // Not my region            return 0;        }                final long actCluster; // Starting cluster        final int count; // #clusters to read        final int actDstOffset; // Actual dst offset        if (vcn < myFirstVcn) {            final int vcnDelta = (int)(myFirstVcn - vcn);            count = Math.min(nrClusters - vcnDelta, myLength);            actDstOffset = dstOffset + (vcnDelta * clusterSize);            actCluster = getCluster();        } else {            // vcn >= myFirstVcn            final int vcnDelta = (int)(vcn - myFirstVcn);            count = Math.min(nrClusters, myLength - vcnDelta);            actDstOffset = dstOffset;            actCluster = getCluster() + vcnDelta;        }        log.debug("cluster=" + cluster + ", length=" + length + ", dstOffset=" + dstOffset);        log.debug("cnt=" + count + ", actclu=" + actCluster + ", actdstoff=" + actDstOffset);                volume.readClusters(actCluster, dst, actDstOffset, count);        return count;    }