StructDefinitionType extends UnqualifiedType { public List<Type> getFieldTypes() { return Collections.unmodifiableList(fieldTypes); } StructDefinitionType(Optional<StructNameType> structNameType,
                               List<String> fieldNames,
                               List<Type> fieldTypes);  StructDefinitionType(StructNameType structNameType,
                              List<String> fieldNames,
                              List<Type> fieldTypes); boolean hasStructNameType(); StructNameType getStructNameType(); List<String> getFieldNames(); List<Type> getFieldTypes(); Type getFieldType(String name); Type getFieldType(int index); String getFieldName(int index); int getNumFields(); void insertField(int index, String name, Type type); void removeField(String fieldToRemove); void setFieldName(int index, String fieldName); void setFieldType(int index, Type type); int getFieldIndex(String fieldToRemove); boolean hasField(String nameToCheck); @Override void accept(IAstVisitor visitor); @Override StructDefinitionType clone(); @Override boolean hasCanonicalConstant(Scope scope); @Override Expr getCanonicalConstant(Scope scope); @Override boolean equals(Object that); @Override int hashCode();  }
@Test public void getFieldTypes() { StructDefinitionType t = new StructDefinitionType(new StructNameType("astruct"), Arrays.asList("x", "y"), Arrays.asList(BasicType.MAT2X2, BasicType.MAT3X3)); assertEquals(t.getFieldTypes().get(0), BasicType.MAT2X2); assertEquals(t.getFieldTypes().get(1), BasicType.MAT3X3); }