private static TypeReference CreateSpecs(TypeReference type, TypeParser.Type type_info) { type = TypeParser.TryCreateGenericInstanceType(type, type_info); int[] specs = type_info.specs; if (specs.IsNullOrEmpty <int>()) { return(type); } for (int i = 0; i < specs.Length; i++) { switch (specs[i]) { case -3: type = new ArrayType(type); break; case -2: type = new ByReferenceType(type); break; case -1: type = new PointerType(type); break; default: { ArrayType arrayType = new ArrayType(type); arrayType.Dimensions.Clear(); for (int j = 0; j < specs[i]; j++) { arrayType.Dimensions.Add(default(ArrayDimension)); } type = arrayType; break; } } } return(type); }