@Override
public ApiMetadata build() {
MApiPermission[] permissions = this.permissions.values().toArray(new MApiPermission[0]);
MApiTag[] tags = this.tags.values().toArray(new MApiTag[0]);
return new ApiMetadata(name, title, summary, description,
termsOfService, null == contact ? null : contact.build(),
version, host, basePath,
protocols.toArray(Arrays2.EMPTY_STRING_ARRAY),
consumes.toArray(Arrays2.EMPTY_STRING_ARRAY),
produces.toArray(Arrays2.EMPTY_STRING_ARRAY),
Builders.buildMap(responses),
Builders.buildMap(paths),
Builders.buildMap(models),
permissions,
securityDefs.toArray(new MApiSecurityDef[]{}),
tags,
extension,
attrs);
}