docs: function() {
          this.vertices = [];
          this.virtualVertices = [];        
          var control = this;
          function collectComponentVertices(geometry) {
              var i, vertex, component, len;
              if(geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
                  vertex = new OpenLayers.Feature.Vector(geometry);
                  vertex._sketch = true;
                  vertex.renderIntent = control.vertexRenderIntent;
                  control.vertices.push(vertex);
              } else {
                  var numVert = geometry.components.length;
                  if(geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
                      numVert -= 1;
                  }
                  for(i=0; i<numVert; ++i) {
                      component = geometry.components[i];
                      if(component.CLASS_NAME == "OpenLayers.Geometry.Point") {
                          vertex = new OpenLayers.Feature.Vector(component);
                          vertex._sketch = true;
                          vertex.renderIntent = control.vertexRenderIntent;
                          control.vertices.push(vertex);
                      } else {
                          collectComponentVertices(component);
                      }
                  }
                  
                  // add virtual vertices in the middle of each edge
                  if (control.createVertices && geometry.CLASS_NAME != "OpenLayers.Geometry.MultiPoint") {
                      for(i=0, len=geometry.components.length; i<len-1; ++i) {
                          var prevVertex = geometry.components[i];
                          var nextVertex = geometry.components[i + 1];
                          if(prevVertex.CLASS_NAME == "OpenLayers.Geometry.Point" &&
                             nextVertex.CLASS_NAME == "OpenLayers.Geometry.Point") {
                              var x = (prevVertex.x + nextVertex.x) / 2;
                              var y = (prevVertex.y + nextVertex.y) / 2;
                              var point = new OpenLayers.Feature.Vector(
                                  new OpenLayers.Geometry.Point(x, y),
                                  null, control.virtualStyle
                              );
                              // set the virtual parent and intended index
                              point.geometry.parent = geometry;
                              point._index = i + 1;
                              point._sketch = true;
                              control.virtualVertices.push(point);
                          }
                      }
                  }
              }
          }
          collectComponentVertices.call(this, this.feature.geometry);
          this.layer.addFeatures(this.virtualVertices, {silent: true});
          this.layer.addFeatures(this.vertices, {silent: true});
      }