text: "use strict;"
  var use = require('bayrell').use;
  /*!
   *  Bayrell Language
   *
   *  (c) Copyright 2016-2020 "Ildar Bikmamatov" <support@bayrell.org>
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *      https://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  if (typeof Bayrell == 'undefined') Bayrell = {};
  if (typeof Bayrell.Lang == 'undefined') Bayrell.Lang = {};
  if (typeof Bayrell.Lang.OpCodes == 'undefined') Bayrell.Lang.OpCodes = {};
  Bayrell.Lang.OpCodes.OpAttr = function(ctx)
  {
  	use("Bayrell.Lang.OpCodes.BaseOpCode").apply(this, arguments);
  };
  Bayrell.Lang.OpCodes.OpAttr.prototype = Object.create(use("Bayrell.Lang.OpCodes.BaseOpCode").prototype);
  Bayrell.Lang.OpCodes.OpAttr.prototype.constructor = Bayrell.Lang.OpCodes.OpAttr;
  Object.assign(Bayrell.Lang.OpCodes.OpAttr.prototype,
  {
  	_init: function(ctx)
  	{
  		use("Bayrell.Lang.OpCodes.BaseOpCode").prototype._init.call(this,ctx);
  		this.op = "op_attr";
  		this.kind = "";
  		this.obj = null;
  		this.value = null;
  		this.attrs = null;
  	},
  	assignObject: function(ctx,o)
  	{
  		if (o instanceof use("Bayrell.Lang.OpCodes.OpAttr"))
  		{
  			this.op = o.op;
  			this.kind = o.kind;
  			this.obj = o.obj;
  			this.value = o.value;
  			this.attrs = o.attrs;
  		}
  		use("Bayrell.Lang.OpCodes.BaseOpCode").prototype.assignObject.call(this,ctx,o);
  	},
  	assignValue: function(ctx,k,v)
  	{
  		if (k == "op")this.op = v;
  		else if (k == "kind")this.kind = v;
  		else if (k == "obj")this.obj = v;
  		else if (k == "value")this.value = v;
  		else if (k == "attrs")this.attrs = v;
  		else use("Bayrell.Lang.OpCodes.BaseOpCode").prototype.assignValue.call(this,ctx,k,v);
  	},
  	takeValue: function(ctx,k,d)
  	{
  		if (d == undefined) d = null;
  		if (k == "op")return this.op;
  		else if (k == "kind")return this.kind;
  		else if (k == "obj")return this.obj;
  		else if (k == "value")return this.value;
  		else if (k == "attrs")return this.attrs;
  		return use("Bayrell.Lang.OpCodes.BaseOpCode").prototype.takeValue.call(this,ctx,k,d);
  	},
  	getClassName: function(ctx)
  	{
  		return "Bayrell.Lang.OpCodes.OpAttr";
  	},
  });
  Object.assign(Bayrell.Lang.OpCodes.OpAttr, use("Bayrell.Lang.OpCodes.BaseOpCode"));
  Object.assign(Bayrell.Lang.OpCodes.OpAttr,
  {
  	KIND_ATTR: "attr",
  	KIND_STATIC: "static",
  	KIND_DYNAMIC: "dynamic",
  	KIND_DYNAMIC_ATTRS: "dynamic_attrs",
  	/* ======================= Class Init Functions ======================= */
  	getCurrentNamespace: function()
  	{
  		return "Bayrell.Lang.OpCodes";
  	},
  	getCurrentClassName: function()
  	{
  		return "Bayrell.Lang.OpCodes.OpAttr";
  	},
  	getParentClassName: function()
  	{
  		return "Bayrell.Lang.OpCodes.BaseOpCode";
  	},
  	getClassInfo: function(ctx)
  	{
  		var Collection = use("Runtime.Collection");
  		var Dict = use("Runtime.Dict");
  		var IntrospectionInfo = use("Runtime.IntrospectionInfo");
  		return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_CLASS,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": "Bayrell.Lang.OpCodes.OpAttr",
  			"annotations": Collection.from([
  			]),
  		});
  	},
  	getFieldsList: function(ctx, f)
  	{
  		var a = [];
  		if (f==undefined) f=0;
  		if ((f&3)==3)
  		{
  			a.push("op");
  			a.push("kind");
  			a.push("obj");
  			a.push("value");
  			a.push("attrs");
  		}
  		return use("Runtime.Collection").from(a);
  	},
  	getFieldInfoByName: function(ctx,field_name)
  	{
  		var Collection = use("Runtime.Collection");
  		var Dict = use("Runtime.Dict");
  		var IntrospectionInfo = use("Runtime.IntrospectionInfo");
  		if (field_name == "KIND_ATTR") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "KIND_STATIC") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "KIND_DYNAMIC") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "KIND_DYNAMIC_ATTRS") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "op") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "kind") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "string",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "obj") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "Bayrell.Lang.OpCodes.BaseOpCode",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "value") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "Bayrell.Lang.OpCodes.BaseOpCode",
  			"annotations": Collection.from([
  			]),
  		});
  		if (field_name == "attrs") return new IntrospectionInfo(ctx, {
  			"kind": IntrospectionInfo.ITEM_FIELD,
  			"class_name": "Bayrell.Lang.OpCodes.OpAttr",
  			"name": field_name,
  			"t": "Runtime.Collection",
  			"s": ["Bayrell.Lang.OpCodes.BaseOpCode"],
  			"annotations": Collection.from([
  			]),
  		});
  		return null;
  	},
  	getMethodsList: function(ctx,f)
  	{
  		if (f==undefined) f=0;
  		var a = [];
  		if ((f&4)==4) a=[
  		];
  		return use("Runtime.Collection").from(a);
  	},
  	getMethodInfoByName: function(ctx,field_name)
  	{
  		return null;
  	},
  });use.add(Bayrell.Lang.OpCodes.OpAttr);
  module.exports = Bayrell.Lang.OpCodes.OpAttr;