code: function(rootObject, property, propertyInfo) {
      this.root = rootObject
      if(property === undefined) {
          this.property = []
      } else if(property instanceof Array) {
          this.property = property
      } else {
          this.property = property.split('.')
      }
  
      if(propertyInfo !== undefined) {
          this.propertyInfo = propertyInfo
      }
  }
docs: an object that is passed a dot-syntax property path and can manipulate the value at that path rootObject is the object in which a value will be pointed to property can either be: a string, in which case it can have dot notation like "a.b.c" an array, in which case, each member of the array is a property of the last property (e.g. ['a','b'] is the same thing as "a.b")