code: function BaseLayer(document, group, raw) {
          this._document = document;
          this._logger = document._logger;
  
          if (group) {
              this._setGroup(group);
          }
  
          var handledProperties = this._handledProperties || {},
              property;
  
          for (property in raw) {
              if (raw.hasOwnProperty(property) && !handledProperties.hasOwnProperty(property)) {
                  switch (property) {
                  case "id":
                      this._id = raw.id;
                      break;
                  case "name":
                      this._setName(raw.name);
                      break;
                  case "bounds":
                      this._setBounds(raw.bounds);
                      break;
                  case "artboard":
                      this._setArtboard(raw.artboard);
                      break;
                  case "boundsWithFX":
                      this._setBoundsWithFX(raw.boundsWithFX);
                      break;
                  case "visible":
                      this._setVisible(raw.visible);
                      break;
                  case "clipped":
                      this._setClipped(raw.clipped);
                      break;
                  case "mask":
                      this._setMask(raw.mask);
                      break;
                  case "layerEffects":
                      this._setLayerEffects(raw.layerEffects);
                      break;
                  case "generatorSettings":
                      this._setGeneratorSettings(raw.generatorSettings);
                      break;
                  case "blendOptions":
                      this._setBlendOptions(raw.blendOptions);
                      break;
                  case "protection":
                      this._setProtection(raw.protection);
                      break;
                  case "path":
                      this._setPath(raw.path);
                      break;
                  case "type":
                      this._setType(raw.type);
                      break;
                  case "index":
                  case "added":
                      // ignore these properties
                      break;
                  default:
                      this._logger.warn("Unhandled property in raw constructor:", property, raw[property]);
              }
              }
          }
      }
docs: Abstract base class for representing layers in a document. This should not
  be instantiated directly.
  
  @constructor
  @private
  @param {Document} document
  @param {?LayerGroup} group The parent layer group of this layer. Null if the layer
  is directly contained by the Document.
  @param {object} raw Raw description of the layer.