Representation of a property consisting of a name and value(s). Note that this property is immutable, meaning that the property
values may not be changed through this interface.

This class is designed to be used with the ValueFactories interface and the particular ValueFactory that
corresponds to the type of value you'd like to use. The ValueFactory will then return the values (if no type
conversion is required) or will convert the values using the appropriate conversion algorithm.

This technique is much better and far safer than casting the values. It is possible that some Property instances contain
heterogeneous values, so casting may not always work. Also, this technique guarantees that the values are properly converted if
the type is not what you expected.

getName

size

Get the number of actual values in this property. If the property allows multiple values, then this
method may return a value greater than 1. If the property only allows a single value, then this method
will return either 0 or 1. This method may return 0 regardless of whether the property allows a single
value, or multiple values.