@Override
	public Object getValue() {
		// find and assemble date appropriately depending on property at this node and type of parent
		// TODO: behavior should be configurable via registry (see comment at top of file)
		
		// VirtualDateNode may only be used for datatype VariablePrecisionTime
		VariablePrecisionTime result=null;
		
		Property parent=this.getParent().getNodeProperty();

		if(parent.isTypeOf(MediaProperty.ID3V2TAG)) {
			if(this.getNodeProperty().isTypeOf(MediaProperty.RELEASE_DATE)) {
				result = getId3v2ReleaseDate();
			} else if(this.getNodeProperty().isTypeOf(MediaProperty.RECORDING_DATE)) {
				result = getId3v2RecordingDate();
			}
		} else if(parent.isTypeOf(MediaProperty.VORBISCOMMENTBLOCK)) {
			if(this.getNodeProperty().isTypeOf(MediaProperty.RELEASE_DATE)) {
				result = getVorbisReleaseDate();
			} else if(this.getNodeProperty().isTypeOf(MediaProperty.RECORDING_DATE)) {
				result = getVorbisRecordingDate();
			}
		}
		// TODO: handle ORIGINAL DATE, other types of dates, user configurable, default/unknown?
		
		return result;
	}