public AVM2Argument( AbcFile abc, UInt32 method, UInt32 argument )
{
_ArgumentType = abc.ConstantPool.Multinames[ ( int )abc.Methods[ ( int )method ].ParamType[ ( int )argument ] ].ToString( abc );
if ( abc.Methods[ ( int )method ].FlagHasParamNames )
{
_ArgumentName = abc.ConstantPool.Strings[ ( int )abc.Methods[ ( int )method ].ParamNames[ ( int )argument ] ];
}
else
{
_ArgumentName = "(no param name)";
}
if ( ( abc.Methods[ ( int )method ].FlagHasOptional ) && ( argument < abc.Methods[ ( int )method ].Option.Count ) )
{
_IsOptional = true;
_OptionalType = abc.Methods[ ( int )method ].Option[ ( int )argument ].OptionType;
_OptionalTypeName = abc.Methods[ ( int )method ].Option[ ( int )argument ].OptionTypeName;
_OptionalValue = abc.Methods[ ( int )method ].Option[ ( int )argument ].GetValue( abc );
}
else
{
_IsOptional = false;
_OptionalType = OptionType.TotallyInvalid;
_OptionalValue = null;
}
}