﻿//----------------------
// <auto-generated>
// </auto-generated>
//----------------------







export class MyItem implements IMyItem {
    readonly extensions!: { [key: string]: any; } | undefined;

    constructor(data?: IMyItem) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            if (_data["extensions"]) {
                (this as any).extensions = {} as any;
                for (let key in _data["extensions"]) {
                    if (_data["extensions"].hasOwnProperty(key))
                        ((this as any).extensions as any)![key] = _data["extensions"][key];
                }
            }
        }
    }

    static fromJS(data: any): MyItem {
        data = typeof data === 'object' ? data : {};
        let result = new MyItem();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        if (this.extensions) {
            data["extensions"] = {};
            for (let key in this.extensions) {
                if (this.extensions.hasOwnProperty(key))
                    (data["extensions"] as any)[key] = (this.extensions as any)[key];
            }
        }
        return data;
    }
}

export interface IMyItem {
    extensions: { [key: string]: any; } | undefined;
}

export class MyClass implements IMyClass {
    resource!: MyItem;

    [key: string]: any;

    constructor(data?: IMyClass) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
            this.resource = data.resource && !(data.resource as any).toJSON ? new MyItem(data.resource) : this.resource as MyItem;
        }
        if (!data) {
            this.resource = new MyItem();
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.resource = _data["resource"] ? MyItem.fromJS(_data["resource"]) : new MyItem();
        }
    }

    static fromJS(data: any): MyClass {
        data = typeof data === 'object' ? data : {};
        let result = new MyClass();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["resource"] = this.resource ? this.resource.toJSON() : undefined as any;
        return data;
    }
}

export interface IMyClass {
    resource: IMyItem;

    [key: string]: any;
}