### Question:
DefaultSurfaceMetadata implements SurfaceMetadata, ImmutableBean, Serializable { public static DefaultSurfaceMetadata of(String name) { return of(SurfaceName.of(name)); } DefaultSurfaceMetadata(
      SurfaceName surfaceName,
      ValueType xValueType,
      ValueType yValueType,
      ValueType zValueType,
      Map<SurfaceInfoType<?>, Object> info,
      List<? extends ParameterMetadata> parameterMetadata); static DefaultSurfaceMetadata of(String name); static DefaultSurfaceMetadata of(SurfaceName name); static DefaultSurfaceMetadataBuilder builder(); @Override T getInfo(SurfaceInfoType<T> type); @SuppressWarnings("unchecked") @Override Optional<T> findInfo(SurfaceInfoType<T> type); @Override DefaultSurfaceMetadata withInfo(SurfaceInfoType<T> type, T value); @Override DefaultSurfaceMetadata withParameterMetadata(List<? extends ParameterMetadata> parameterMetadata); DefaultSurfaceMetadataBuilder toBuilder(); static DefaultSurfaceMetadata.Meta meta(); @Override DefaultSurfaceMetadata.Meta metaBean(); @Override SurfaceName getSurfaceName(); @Override ValueType getXValueType(); @Override ValueType getYValueType(); @Override ValueType getZValueType(); ImmutableMap<SurfaceInfoType<?>, Object> getInfo(); @Override Optional<List<ParameterMetadata>> getParameterMetadata(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_serialization() { DefaultSurfaceMetadata test = DefaultSurfaceMetadata.of(SURFACE_NAME); assertSerialization(test); }