fix study level query params
Use 3-argument Encoding.GetString for improved portability
Exclude Compiled option for improved portability
Use foreach and Length for improved portability

List.ForEach is a non-portable method and is therefore replaced with a
foreach () equivalent.
Property T[].LongLength is non-portable and therefore replaced with
T[].Length. The maximum length of the relevant buffer arrays is most
likely within the limits of the 32-bit signed integer. (Theoretically,
maximum length of the relevant arrays are 32-bit unsigned integer, so
there might be need for further modifications to ensure consistency in
all code.)
Use "new" keyword in overridden method signatures
Added Equals methods

Overloading == and != operators without overloading the Equals() method
normally yields a compilation warning. For completeness, Equals()
methods have been implemented, and the GetHashCode() method has been
corrected, using ReSharper as code generator.