code: private byte[] makePalette(int pRed, int pGreen, int pBlue) {
          byte[] palette = new byte[PLTE_CHUNK_LENGTH + 4];
          System.arraycopy(PNG_IMG, PLTE_CHUNK_START, palette, 0, PLTE_CHUNK_LENGTH);
  
          palette[RED_IDX]   = (byte) pRed;
          palette[GREEN_IDX] = (byte) pGreen;
          palette[BLUE_IDX]  = (byte) pBlue;
  
          updateCRC(palette, 0, PLTE_CHUNK_LENGTH);
  
          return palette;
      }
docs: Creates a PNG palette (PLTE) chunk with one color.
  The palette chunk data is always 3 bytes in length (one byte per color
  component).
  The returned byte array is then {@code 4 + 3 + 4 = 11} bytes,
  including chunk header, data and CRC.
  
  @param pRed the red component
  @param pGreen the reen component
  @param pBlue the blue component
  
  @return the bytes for the PLTE chunk, including CRC (but not length)