docs: public ChaincodeID getChaincodeID() throws InvalidArgumentException {
  
          try {
  
              if (chaincodeID == null) {
  
                  Header header = Header.parseFrom(proposal.getHeader());
                  Common.ChannelHeader channelHeader = Common.ChannelHeader.parseFrom(header.getChannelHeader());
                  ChaincodeHeaderExtension chaincodeHeaderExtension = ChaincodeHeaderExtension.parseFrom(channelHeader.getExtension());
                  chaincodeID = new ChaincodeID(chaincodeHeaderExtension.getChaincodeId());
              }
              return chaincodeID;
  
          } catch (Exception e) {
              throw new InvalidArgumentException(e);
          }
  
      }