function createVAOAndSetAttributes(gl, setters, attribs, indices) {
      const vao = gl.createVertexArray();
      gl.bindVertexArray(vao);
      setAttributes(setters, attribs);
      if (indices) {
        gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indices);
      }
      // We unbind this because otherwise any change to ELEMENT_ARRAY_BUFFER
      // like when creating buffers for other stuff will mess up this VAO's binding
      gl.bindVertexArray(null);
      return vao;
    }
@typedef {Object} ProgramInfo
@property {WebGLProgram} program A shader program
@property {Object<string, function>} uniformSetters: object of setters as returned from createUniformSetters,
@property {Object<string, function>} attribSetters: object of setters as returned from createAttribSetters,
@memberOf module:webgl-utils