package st.gravel.support.compiler.jvm;

/*
	This file is automatically generated from typed smalltalk source. Do not edit by hand.
	(C) AG5.com
*/

import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.BlockNode;
import st.gravel.support.compiler.jvm.JVMVariable;

public class BlockSendArgument extends Object implements Cloneable {

	public static BlockSendArgument_Factory factory = new BlockSendArgument_Factory();

	BlockNode _blockNode;

	JVMVariable[] _copiedVariables;

	String _name;

	public static class BlockSendArgument_Factory extends st.gravel.support.jvm.SmalltalkFactory {

		public BlockSendArgument basicNew() {
			BlockSendArgument newInstance = new BlockSendArgument();
			newInstance.initialize();
			return newInstance;
		}

		public BlockSendArgument blockNode_copiedVariables_(final BlockNode _aBlockNode, final JVMVariable[] _anArray) {
			return this.basicNew().initializeBlockNode_copiedVariables_(_aBlockNode, _anArray);
		}
	}

	static public BlockSendArgument _blockNode_copiedVariables_(Object receiver, final BlockNode _aBlockNode, final JVMVariable[] _anArray) {
		return factory.blockNode_copiedVariables_(_aBlockNode, _anArray);
	}

	public BlockNode blockNode() {
		return _blockNode;
	}

	public JVMVariable[] copiedVariables() {
		return _copiedVariables;
	}

	public BlockSendArgument copy() {
		try {
			BlockSendArgument _temp1 = (BlockSendArgument) this.clone();
			_temp1.postCopy();
			return _temp1;
		} catch (CloneNotSupportedException e) {
			throw new RuntimeException(e);
		}
	}

	public BlockSendArgument_Factory factory() {
		return factory;
	}

	public BlockSendArgument initialize() {
		return this;
	}

	public BlockSendArgument initializeBlockNode_copiedVariables_(final BlockNode _aBlockNode, final JVMVariable[] _anArray) {
		_blockNode = _aBlockNode;
		_copiedVariables = _anArray;
		this.initialize();
		return this;
	}

	public String name() {
		return _name;
	}

	public BlockSendArgument postCopy() {
		return this;
	}

	public BlockSendArgument pvtSetName_(final String _aString) {
		_name = _aString;
		return this;
	}

	public BlockSendArgument withName_(final String _aString) {
		return this.copy().pvtSetName_(_aString);
	}
}
