def [](name)
    name = name.intern
    fail("Invalid parameter #{name}(#{name.inspect})") unless self.class.validattr?(name)

    if name == :name && nv = name_var
      name = nv
    end

    if obj = @parameters[name]
      # Note that if this is a property, then the value is the "should" value,
      # not the current value.
      obj.value
    else
      return nil
    end
  end
def [](name)
    name = name.intern
    fail("Invalid parameter #{name}(#{name.inspect})") unless self.class.validattr?(name)

    if name == :name && nv = name_var
      name = nv
    end

    if obj = @parameters[name]
      # Note that if this is a property, then the value is the "should" value,
      # not the current value.
      obj.value
    else
      return nil
    end
  end
Gets the 'should' (wanted state) value of a parameter or property by name.
 To explicitly get the 'is' (current state) value use `o.is(:name)`, and to explicitly get the 'should' value
 use `o.should(:name)`
 @param name [String] the name of the attribute to obtain the 'should' value for.
 @return [Object] 'should'/wanted value of the given attribute