public static dynamic Parse(this ClassField field, ref IDataReader reader) { if (field.is_vector || field.type == "ByteArray") { dynamic[] array = null; if (field.constant_length.HasValue) { array = new dynamic[field.constant_length.Value]; } else { string read_length_method = $"Read{field.write_length_method.Replace("write", "")}"; array = new dynamic[read_length_method._readMethod(ref reader)]; } for (int i = 0; i < array.Length; i++) { array[i] = field._readElement(ref reader); } return(array); } else { return(field._readElement(ref reader)); } }