public ES_StructData.Builder GetOrCreateStruct(ES_AccessModifier accessMod, ArrayPointer <byte> name, ArrayPointer <byte> sourceUnit ) { CheckDisposed(); if (CheckTypeExists(name, ES_TypeTag.Struct) != null) { throw new CompilationException(ES_FrontendErrors.ClashingTypeExists); } if (StructBuilders.TryGetValue(name, out var builder)) { return(builder); } var structDataPtr = envBuilder.MemoryManager.GetMemory <ES_StructData> (); builder = new ES_StructData.Builder(structDataPtr, accessMod, new ES_FullyQualifiedName(NamespaceName, name), sourceUnit); StructBuilders.Add(name, builder); NamespaceData.types.Add(&structDataPtr->TypeInfo); return(builder); }