docs: def self_build(self, field_pos_list=None):
          """
          Create the default layer regarding fields_desc dict
  
          :param field_pos_list:
          """
          if self.raw_packet_cache is not None:
              for fname, fval in six.iteritems(self.raw_packet_cache_fields):
                  if self.getfieldval(fname) != fval:
                      self.raw_packet_cache = None
                      self.raw_packet_cache_fields = None
                      self.wirelen = None
                      break
              if self.raw_packet_cache is not None:
                  return self.raw_packet_cache
          p = b""
          for f in self.fields_desc:
              val = self.getfieldval(f.name)
              if isinstance(val, RawVal):
                  sval = raw(val)
                  p += sval
                  if field_pos_list is not None:
                      field_pos_list.append((f.name, sval.encode("string_escape"), len(p), len(sval)))  # noqa: E501
              else:
                  p = f.addfield(self, p, val)
          return p