code: func Unmarshal(b []byte, data interface{}) error {
  	in := bytes.NewReader(b)
  	decoder := NewDecoder(in)
  	return decoder.Decode(data)
  }
docs: //
  // Unmarshal - decode the TBin byte array into the specified target entity. If the
  // target entity is a pointer to an interface{}, it will decode into the appropriate
  // primitive types, along with map[string]interface{} for any structs and maps, and
  // []interface{} for any arrays.
  // If a pointer to a particular struct type is provided, it is filled with data as best
  // it can, allocating substructure as needed.
  // In this, it tries to imitate the encoding/json behavior.