func NewLikeActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeLike),
			WithTo(options.To...),
			WithPublishedTime(options.Published),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
			Result: options.Result,
		},
	}
}
NewLikeActivity returns a new 'Like' activity.
package vocab
import (
	"net/url"
)
type ActivityType struct {
	*ObjectType
	activity *activityType
}
type activityType struct {
	Actor  *URLProperty    `json:"actor,omitempty"`
	Target *ObjectProperty `json:"target,omitempty"`
	Object *ObjectProperty `json:"object,omitempty"`
	Result *ObjectProperty `json:"result,omitempty"`
}
func (t *ActivityType) Actor() *url.URL {
	if t == nil || t.activity == nil || t.activity.Actor == nil {
		return nil
	}
	return t.activity.Actor.URL()
}
func (t *ActivityType) SetActor(iri *url.URL) {
	t.activity.Actor = NewURLProperty(iri)
}
func (t *ActivityType) Target() *ObjectProperty {
	if t == nil || t.activity == nil {
		return nil
	}
	return t.activity.Target
}
func (t *ActivityType) Object() *ObjectProperty {
	if t == nil || t.activity == nil {
		return nil
	}
	return t.activity.Object
}
func (t *ActivityType) Result() *ObjectProperty {
	if t == nil || t.activity == nil {
		return nil
	}
	return t.activity.Result
}
func (t *ActivityType) MarshalJSON() ([]byte, error) {
	return MarshalJSON(t.ObjectType, t.activity)
}
func (t *ActivityType) UnmarshalJSON(bytes []byte) error {
	t.ObjectType = NewObject()
	t.activity = &activityType{}
	return UnmarshalJSON(bytes, t.ObjectType, t.activity)
}
func NewCreateActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeCreate),
			WithTo(options.To...),
			WithPublishedTime(options.Published),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Target: options.Target,
			Object: obj,
		},
	}
}
func NewAnnounceActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeAnnounce),
			WithTo(options.To...),
			WithPublishedTime(options.Published),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
		},
	}
}
func NewFollowActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeFollow),
			WithTo(options.To...),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
		},
	}
}
func NewInviteActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams, ContextActivityAnchors)...),
			WithID(options.ID),
			WithType(TypeInvite),
			WithTo(options.To...),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
			Target: options.Target,
		},
	}
}
func NewAcceptActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeAccept),
			WithTo(options.To...),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
			Result: options.Result,
		},
	}
}
func NewRejectActivity(obj *ObjectProperty, opts ...Opt) *ActivityType {
	options := NewOptions(opts...)
	return &ActivityType{
		ObjectType: NewObject(
			WithContext(getContexts(options, ContextActivityStreams)...),
			WithID(options.ID),
			WithType(TypeReject),
			WithTo(options.To...),
		),
		activity: &activityType{
			Actor:  NewURLProperty(options.Actor),
			Object: obj,
		},
	}
}