This is how you access necessary private fields in closed source libraries without having to decompile and recode their spaghetti.
public static T GetPrField<T>(this object obj, string name)
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = obj.GetType();
FieldInfo field = type.GetField(name, flags);
return (T)field.GetValue(obj);
}