func (this ForgeFedFilesAddedProperty) JSONLDContext() map[string]string {
	m := map[string]string{"https://forgefed.peers.community/ns": this.alias}
	for _, elem := range this.properties {
		child := elem.JSONLDContext()
		for k, v := range child {
			m[k] = v
		}
	}
	return m
}
JSONLDContext returns the JSONLD URIs required in the context string for this
property and the specific values that are set. The value in the map is the
alias used to import the property's value or values.
package propertyfilesadded
import (
	"fmt"
	string1 "github.com/go-fed/activity/streams/values/string"
	vocab "github.com/go-fed/activity/streams/vocab"
	"net/url"
)
type ForgeFedFilesAddedPropertyIterator struct {
	xmlschemaStringMember string
	hasStringMember       bool
	unknown               interface{}
	iri                   *url.URL
	alias                 string
	myIdx                 int
	parent                vocab.ForgeFedFilesAddedProperty
}
func NewForgeFedFilesAddedPropertyIterator() *ForgeFedFilesAddedPropertyIterator {
	return &ForgeFedFilesAddedPropertyIterator{alias: ""}
}
func deserializeForgeFedFilesAddedPropertyIterator(i interface{}, aliasMap map[string]string) (*ForgeFedFilesAddedPropertyIterator, error) {
	alias := ""
	if a, ok := aliasMap["https://forgefed.peers.community/ns"]; ok {
		alias = a
	}
	if s, ok := i.(string); ok {
		u, err := url.Parse(s)
		if err == nil && len(u.Scheme) > 0 {
			this := &ForgeFedFilesAddedPropertyIterator{
				alias: alias,
				iri:   u,
			}
			return this, nil
		}
	}
	if v, err := string1.DeserializeString(i); err == nil {
		this := &ForgeFedFilesAddedPropertyIterator{
			alias:                 alias,
			hasStringMember:       true,
			xmlschemaStringMember: v,
		}
		return this, nil
	}
	this := &ForgeFedFilesAddedPropertyIterator{
		alias:   alias,
		unknown: i,
	}
	return this, nil
}
func (this ForgeFedFilesAddedPropertyIterator) Get() string {
	return this.xmlschemaStringMember
}
func (this ForgeFedFilesAddedPropertyIterator) GetIRI() *url.URL {
	return this.iri
}
func (this ForgeFedFilesAddedPropertyIterator) HasAny() bool {
	return this.IsXMLSchemaString() || this.iri != nil
}
func (this ForgeFedFilesAddedPropertyIterator) IsIRI() bool {
	return this.iri != nil
}
func (this ForgeFedFilesAddedPropertyIterator) IsXMLSchemaString() bool {
	return this.hasStringMember
}
func (this ForgeFedFilesAddedPropertyIterator) JSONLDContext() map[string]string {
	m := map[string]string{"https://forgefed.peers.community/ns": this.alias}
	var child map[string]string
	for k, v := range child {
		m[k] = v
	}
	return m
}
func (this ForgeFedFilesAddedPropertyIterator) KindIndex() int {
	if this.IsXMLSchemaString() {
		return 0
	}
	if this.IsIRI() {
		return -2
	}
	return -1
}
func (this ForgeFedFilesAddedPropertyIterator) LessThan(o vocab.ForgeFedFilesAddedPropertyIterator) bool {
	if this.IsIRI() && o.IsIRI() {
		return this.iri.String() < o.GetIRI().String()
	} else if this.IsIRI() {
		return true
	} else if o.IsIRI() {
		return false
	}
	if !this.IsXMLSchemaString() && !o.IsXMLSchemaString() {
		return false
	} else if this.IsXMLSchemaString() && !o.IsXMLSchemaString() {
		return false
	} else if !this.IsXMLSchemaString() && o.IsXMLSchemaString() {
		return true
	} else {
		return string1.LessString(this.Get(), o.Get())
	}
}
func (this ForgeFedFilesAddedPropertyIterator) Name() string {
	if len(this.alias) > 0 {
		return this.alias + ":" + "ForgeFedFilesAdded"
	} else {
		return "ForgeFedFilesAdded"
	}
}
func (this ForgeFedFilesAddedPropertyIterator) Next() vocab.ForgeFedFilesAddedPropertyIterator {
	if this.myIdx+1 >= this.parent.Len() {
		return nil
	} else {
		return this.parent.At(this.myIdx + 1)
	}
}
func (this ForgeFedFilesAddedPropertyIterator) Prev() vocab.ForgeFedFilesAddedPropertyIterator {
	if this.myIdx-1 < 0 {
		return nil
	} else {
		return this.parent.At(this.myIdx - 1)
	}
}
func (this *ForgeFedFilesAddedPropertyIterator) Set(v string) {
	this.clear()
	this.xmlschemaStringMember = v
	this.hasStringMember = true
}
func (this *ForgeFedFilesAddedPropertyIterator) SetIRI(v *url.URL) {
	this.clear()
	this.iri = v
}
func (this *ForgeFedFilesAddedPropertyIterator) clear() {
	this.unknown = nil
	this.iri = nil
	this.hasStringMember = false
}
func (this ForgeFedFilesAddedPropertyIterator) serialize() (interface{}, error) {
	if this.IsXMLSchemaString() {
		return string1.SerializeString(this.Get())
	} else if this.IsIRI() {
		return this.iri.String(), nil
	}
	return this.unknown, nil
}
type ForgeFedFilesAddedProperty struct {
	properties []*ForgeFedFilesAddedPropertyIterator
	alias      string
}
func DeserializeFilesAddedProperty(m map[string]interface{}, aliasMap map[string]string) (vocab.ForgeFedFilesAddedProperty, error) {
	alias := ""
	if a, ok := aliasMap["https://forgefed.peers.community/ns"]; ok {
		alias = a
	}
	propName := "filesAdded"
	if len(alias) > 0 {
		propName = fmt.Sprintf("%s:%s", alias, "filesAdded")
	}
	i, ok := m[propName]
	if ok {
		this := &ForgeFedFilesAddedProperty{
			alias:      alias,
			properties: []*ForgeFedFilesAddedPropertyIterator{},
		}
		if list, ok := i.([]interface{}); ok {
			for _, iterator := range list {
				if p, err := deserializeForgeFedFilesAddedPropertyIterator(iterator, aliasMap); err != nil {
					return this, err
				} else if p != nil {
					this.properties = append(this.properties, p)
				}
			}
		} else {
			if p, err := deserializeForgeFedFilesAddedPropertyIterator(i, aliasMap); err != nil {
				return this, err
			} else if p != nil {
				this.properties = append(this.properties, p)
			}
		}
		for idx, ele := range this.properties {
			ele.parent = this
			ele.myIdx = idx
		}
		return this, nil
	}
	return nil, nil
}
func NewForgeFedFilesAddedProperty() *ForgeFedFilesAddedProperty {
	return &ForgeFedFilesAddedProperty{alias: ""}
}
func (this *ForgeFedFilesAddedProperty) AppendIRI(v *url.URL) {
	this.properties = append(this.properties, &ForgeFedFilesAddedPropertyIterator{
		alias:  this.alias,
		iri:    v,
		myIdx:  this.Len(),
		parent: this,
	})
}
func (this *ForgeFedFilesAddedProperty) AppendXMLSchemaString(v string) {
	this.properties = append(this.properties, &ForgeFedFilesAddedPropertyIterator{
		alias:                 this.alias,
		hasStringMember:       true,
		myIdx:                 this.Len(),
		parent:                this,
		xmlschemaStringMember: v,
	})
}
func (this ForgeFedFilesAddedProperty) At(index int) vocab.ForgeFedFilesAddedPropertyIterator {
	return this.properties[index]
}
func (this ForgeFedFilesAddedProperty) Begin() vocab.ForgeFedFilesAddedPropertyIterator {
	if this.Empty() {
		return nil
	} else {
		return this.properties[0]
	}
}
func (this ForgeFedFilesAddedProperty) Empty() bool {
	return this.Len() == 0
}
func (this ForgeFedFilesAddedProperty) End() vocab.ForgeFedFilesAddedPropertyIterator {
	return nil
}
func (this *ForgeFedFilesAddedProperty) InsertIRI(idx int, v *url.URL) {
	this.properties = append(this.properties, nil)
	copy(this.properties[idx+1:], this.properties[idx:])
	this.properties[idx] = &ForgeFedFilesAddedPropertyIterator{
		alias:  this.alias,
		iri:    v,
		myIdx:  idx,
		parent: this,
	}
	for i := idx; i < this.Len(); i++ {
		(this.properties)[i].myIdx = i
	}
}
func (this *ForgeFedFilesAddedProperty) InsertXMLSchemaString(idx int, v string) {
	this.properties = append(this.properties, nil)
	copy(this.properties[idx+1:], this.properties[idx:])
	this.properties[idx] = &ForgeFedFilesAddedPropertyIterator{
		alias:                 this.alias,
		hasStringMember:       true,
		myIdx:                 idx,
		parent:                this,
		xmlschemaStringMember: v,
	}
	for i := idx; i < this.Len(); i++ {
		(this.properties)[i].myIdx = i
	}
}