code: function(obj) {
          if (obj == null) {
              return null;
          }
          var geometry, collection = false;
          if(obj.type == "GeometryCollection") {
              if(!(OpenLayers.Util.isArray(obj.geometries))) {
                  throw "GeometryCollection must have geometries array: " + obj;
              }
              var numGeom = obj.geometries.length;
              var components = new Array(numGeom);
              for(var i=0; i<numGeom; ++i) {
                  components[i] = this.parseGeometry.apply(
                      this, [obj.geometries[i]]
                  );
              }
              geometry = new OpenLayers.Geometry.Collection(components);
              collection = true;
          } else {
              if(!(OpenLayers.Util.isArray(obj.coordinates))) {
                  throw "Geometry must have coordinates array: " + obj;
              }
              if(!this.parseCoords[obj.type.toLowerCase()]) {
                  throw "Unsupported geometry type: " + obj.type;
              }
              try {
                  geometry = this.parseCoords[obj.type.toLowerCase()].apply(
                      this, [obj.coordinates]
                  );
              } catch(err) {
                  // deal with bad coordinates
                  throw err;
              }
          }
          // We don't reproject collections because the children are reprojected
          // for us when they are created.
          if (this.internalProjection && this.externalProjection && !collection) {
              geometry.transform(this.externalProjection, 
                                 this.internalProjection); 
          }                       
          return geometry;
      }
docs: Method: parseGeometry
  Convert a geometry object from GeoJSON into an <OpenLayers.Geometry>.
  
  Parameters:
  obj - {Object} An object created from a GeoJSON object
  
  Returns:
  {<OpenLayers.Geometry>} A geometry.