code: func Decode(r io.Reader) (image.Image, error) {
  	d := &decoder{
  		r:   r,
  		crc: crc32.NewIEEE(),
  	}
  	if err := d.checkHeader(); err != nil {
  		if err == io.EOF {
  			err = io.ErrUnexpectedEOF
  		}
  		return nil, err
  	}
  	for d.stage != dsSeenIEND {
  		if err := d.parseChunk(); err != nil {
  			if err == io.EOF {
  				err = io.ErrUnexpectedEOF
  			}
  			return nil, err
  		}
  	}
  	return d.img, nil
  }
docs: // Decode reads a PNG image from r and returns it as an image.Image.
  // The type of Image returned depends on the PNG contents.