code: function (options) {
          Renderable.call(this);
  
          options = options || {};
          if (!options.objectNode) {
              throw new ArgumentError(
                  Logger.logMessage(Logger.LEVEL_SEVERE, "KmlObject", "constructor", "Passed node isn't defined.")
              );
          }
          this._node = options.objectNode;
          this._cache = {};
          
          this._controls = options.controls || [];
          // It should be possible to keep the context here?
          this._factory = new KmlElementsFactoryCached({controls: this._controls});
          
          this.hook(this._controls, options);
      }
docs: Constructs an Kml object. Every node in the Kml document is either basic type or Kml object. Applications usually
  don't call this constructor. It is usually called only by its descendants.
  It should be treated as mixin.
  @alias KmlObject
  @classdesc Contains the data associated with every Kml object.
  @param options {Object}
  @param options.objectNode {Node} Node representing Kml Object
  @param options.controls {KmlControls[]} Controls associated with current Node
  @constructor
  @throws {ArgumentError} If either node is null or id isn't present on the object.
  @augments Renderable
  @see https://developers.google.com/kml/documentation/kmlreference#object