code: @Override public void readFrom(DataInput in) throws IOException, ClassNotFoundException {
          // 1. read the leading byte first
          byte leading=in.readByte();
  
          // 2. the flags
          flags=in.readShort();
  
          // 3. dest_addr
          if(Util.isFlagSet(leading, DEST_SET))
              dest=Util.readAddress(in);
  
          // 4. src_addr
          if(Util.isFlagSet(leading, SRC_SET))
              sender=Util.readAddress(in);
  
          // 5. headers
          int len=in.readShort();
          this.headers=createHeaders(len);
          for(int i=0; i < len; i++) {
              short id=in.readShort();
              Header hdr=readHeader(in).setProtId(id);
              this.headers[i]=hdr;
          }
  
          // 6. buf
          if(Util.isFlagSet(leading, BUF_SET)) {
              len=in.readInt();
              buf=new byte[len];
              in.readFully(buf, 0, len);
              length=len;
          }
      }
docs: Reads the message's contents from an input stream