code: func (b *Block) Value() (interface{}, error) {
  	switch b.typ {
  	case fileHeader:
  		var h sam.Header
  		blockData, err := b.expandBlockdata()
  		if err != nil {
  			return nil, err
  		}
  		end := binary.LittleEndian.Uint32(blockData[:4])
  		err = h.UnmarshalText(blockData[4 : 4+end])
  		if err != nil {
  			return nil, err
  		}
  		return &h, nil
  	case mappedSliceHeader:
  		var s Slice
  		s.readFrom(bytes.NewReader(b.blockData))
  		return &s, nil
  	default:
  		// Experimental.
  		switch b.method {
  		case gzipMethod, bzip2Method, lzmaMethod:
  			var err error
  			b.blockData, err = b.expandBlockdata()
  			if err != nil {
  				return nil, err
  			}
  			b.method |= 0x80
  		default:
  			// Do nothing.
  		}
  		return b, nil
  	}
  }
docs: // Value returns the value of the Block.
  //
  // Note that rANS decompression is not implemented.