// public static Outracks.Simulator.ByteFileSource GetFileSource(string path) [static] :168
::g::Outracks::Simulator::ByteFileSource* FileCache::GetFileSource(uString* path)
{
    uStackFrame __("Outracks.Simulator.FileCache", "GetFileSource(string)");
    FileCache_typeof()->Init();
    ::g::Outracks::Simulator::ByteFileSource* ret2;
    return (::g::Uno::Collections::Dictionary__get_Item_fn(uPtr(FileCache::_cache()), path, &ret2), ret2);
}
// public static void Update(string path, byte[] bytes) [static] :157
void FileCache::Update(uString* path, uArray* bytes)
{
    FileCache_typeof()->Init();
    bool ret3;
    ::g::Outracks::Simulator::ByteFileSource* fs = NULL;

    if ((::g::Uno::Collections::Dictionary__TryGetValue_fn(uPtr(FileCache::_cache()), path, (void**)(&fs), &ret3), ret3))
        uPtr(fs)->Update(bytes);
    else
        ::g::Uno::Collections::Dictionary__set_Item_fn(uPtr(FileCache::_cache()), path, ::g::Outracks::Simulator::ByteFileSource::New1(path, bytes));
}
uType* FileCache_typeof()
{
    static uSStrong<uType*> type;
    if (type != NULL) return type;

    uTypeOptions options;
    options.FieldCount = 1;
    options.ObjectSize = sizeof(FileCache);
    options.TypeSize = sizeof(uType);
    type = uClassType::New("Outracks.Simulator.FileCache", options);
    type->fp_ctor_ = (void*)FileCache__New1_fn;
    type->fp_cctor_ = FileCache__cctor__fn;
    ::TYPES[0] = ::g::Uno::Collections::Dictionary_typeof()->MakeType(::g::Uno::String_typeof(), ::g::Outracks::Simulator::ByteFileSource_typeof());
    type->SetFields(0,
        ::g::Uno::Collections::Dictionary_typeof()->MakeType(::g::Uno::String_typeof(), ::g::Outracks::Simulator::ByteFileSource_typeof()), (uintptr_t)&::g::Outracks::Simulator::FileCache::_cache_, uFieldFlagsStatic);
    type->Reflection.SetFunctions(3,
        new uFunction("GetFileSource", NULL, (void*)FileCache__GetFileSource_fn, 0, true, ::g::Outracks::Simulator::ByteFileSource_typeof(), 1, ::g::Uno::String_typeof()),
        new uFunction(".ctor", NULL, (void*)FileCache__New1_fn, 0, true, FileCache_typeof(), 0),
        new uFunction("Update", NULL, (void*)FileCache__Update_fn, 0, true, uVoid_typeof(), 2, ::g::Uno::String_typeof(), ::g::Uno::Byte_typeof()->Array()));
    return type;
}
// public generated FileCache New() [static] :155
FileCache* FileCache::New1()
{
    FileCache* obj1 = (FileCache*)uNew(FileCache_typeof());
    obj1->ctor_();
    return obj1;
}