public object Decode()
{
_indicator = GetNextIndicator();
if (_indicator == -1)
{
return null;
}
if (_indicator >= '0' && _indicator <= '9')
{
return DecodeByteString();
}
else if (_indicator == 'i')
{
return DecodeLong();
}
else if (_indicator == 'l')
{
return DecodeList();
}
else if (_indicator == 'd')
{
return DecodeDictionary();
}
else
{
throw new ArgumentException(string.Format("Unknown bencoded type: '{0}'", (char) _indicator));
}
}