code: function(config){
     Statement.apply( this, arguments ); // Call the Statement (super) contructor
      this._schedule = config.schedule || config._schedule || null;
      // Create a specification from a Capability
      if (config instanceof Capability || config instanceof Specification || config instanceof Statement){
          var cap = config; // Not sure of why this has been done...
          this._verb = cap._verb || Statement.VERB_MEASURE;
          this._label = cap._label ;
          this._metadata = cap._metadata ;
          this._params = _.clone(cap._params, true) ;
          this._resultcolumns = _.clone(cap._resultcolumns , true);
      }
      else{
          if (config.capability){
              // We can have a serialized version (with trailing ) or a programmatically config, easier without _
              this._verb = config.capability._verb || config.capability.verb || Statement.VERB_MEASURE;
              this._label = config.capability._label || config.capability.label || null;
              this._metadata = config.capability._metadata || config.capability.metadata || {};
              this._params = config.capability._params || config.capability.params || {};
              this._resultcolumns = config.capability._resultcolumns || config.capability.resultcolumns || [];
          }else{
              this._verb = config._verb || config.verb || Statement.VERB_MEASURE;
              this._label = config._label || config.label || null;
              this._metadata = config._metadata || config.metadata || {};
              this._params = config._params || config.params || {};
              this._resultcolumns = config._resultcolumns || config.resultcolumns || [];
          }
      }
      if (config.when || config._when)
          this._when = config.when || config._when;
      return this;// Chaining
  }
docs: #Specification A Specification represents a request for an mPlane component to do something it has advertised in a Capability. Capabilities contain verbs (strings identifying the thing the component can do), parameters (which must be given by a client in a Specification in order for the component to do that thing), metadata (additional information about the process used to do that thing), and result columns (the data that thing will return). > Can be created starting from a json config, a Capability, a Statement or another Specification