private static object DeserializeTag(NbtTag tag, Type type)
        {
            switch (tag.Type)
            {
            case NbtTagType.Byte:
            case NbtTagType.Double:
            case NbtTagType.Float:
            case NbtTagType.Int:
            case NbtTagType.Long:
            case NbtTagType.Short:
            case NbtTagType.String:
                return(Convert.ChangeType(tag.GetValue(), type));

            case NbtTagType.ByteArray:
                break;

            case NbtTagType.Compound:
                return(DeserializeCompound(tag as NbtCompound, type));

            case NbtTagType.IntArray:
                break;

            case NbtTagType.List:
                return(DeserializeList(tag as NbtList, type));

            default:
                throw new ArgumentOutOfRangeException();
            }

            throw new NotImplementedException();
        }
		private static object DeserializeTag(NbtTag tag, Type type)
		{
			switch (tag.Type)
			{
				case NbtTagType.Byte:
				case NbtTagType.Double:
				case NbtTagType.Float:
				case NbtTagType.Int:
				case NbtTagType.Long:
				case NbtTagType.Short:
				case NbtTagType.String:
					return Convert.ChangeType(tag.GetValue(), type);
				case NbtTagType.ByteArray:
					break;
				case NbtTagType.Compound:
					return DeserializeCompound(tag as NbtCompound, type);
				case NbtTagType.IntArray:
					break;
				case NbtTagType.List:
					return DeserializeList(tag as NbtList, type);
				default:
					throw new ArgumentOutOfRangeException();
			}

			throw new NotImplementedException();
		}