return {
  tag = 'graphicsObjects',
  summary = 'Create a new Mesh.',
  description = [[
    Creates a new Mesh.  Meshes contain the data for an arbitrary set of vertices, and can be drawn.
    You must specify either the capacity for the Mesh or an initial set of vertex data.  Optionally,
    a custom format table can be used to specify the set of vertex attributes the mesh will provide
    to the active shader.  The draw mode and usage hint can also optionally be specified.
  ]],
  arguments = {
    size = {
      type = 'number',
      description = 'The maximum number of vertices the Mesh can store.'
    },
    mode = {
      type = 'MeshDrawMode',
      default = [['fan']],
      description = 'How the Mesh will connect its vertices into triangles.'
    },
    usage = {
      type = 'MeshUsage',
      default = [['dynamic']],
      description = [[
        An optimization hint indicating how often the data in the Mesh will be updated.
      ]]
    },
    vertices = {
      type = 'table',
      description = 'A table of vertices.  Each vertex is a table containing the vertex data.'
    },
    vertexData = {
      type = 'VertexData',
      description = 'The VertexData to load into the Mesh.'
    },
    format = {
      type = 'table',
      description = 'A table describing the attribute format for the vertices.'
    }
  },
  returns = {
    mesh = {
      type = 'Mesh',
      description = 'The new Mesh.'
    }
  },
  variants = {
    {
      arguments = { 'size', 'mode', 'usage' },
      returns = { 'mesh' }
    },
    {
      arguments = { 'vertices', 'mode', 'usage' },
      returns = { 'mesh' }
    },
    {
      description = [[
        These variants accept a custom vertex format.  For more info, see the <a
        data-key="Mesh">`Mesh`</a> page.
      ]],
      arguments = { 'format', 'size', 'mode', 'usage' },
      returns = { 'mesh' }
    },
    {
      arguments = { 'format', 'vertices', 'mode', 'usage' },
      returns = { 'mesh' }
    }
  },
  notes = 'Once created, the size of the Mesh can\'t be changed.'
}
