private StructureMembers createStructureMembers(UserType userType, String varname) { // Incorrect: StructureMembers sm = new StructureMembers(userType.name); StructureMembers sm = new StructureMembers(varname); for (Field fld : userType.flds) { StructureMembers.Member m = sm.addMember(fld.name, null, null, fld.ctype.dt, fld.dims); m.setDataParam(fld.offset); /* This should already have been taken care of if(fld.ctype.isVlen) {m.setShape(new int[]{-1}); } */ if (fld.ctype.dt == DataType.STRUCTURE) { UserType nested_utype = userTypes.get(fld.fldtypeid); StringBuilder partfqn = new StringBuilder(); partfqn.append(EscapeStrings.backslashEscapeCDMString(varname,".")); partfqn.append("."); partfqn.append(EscapeStrings.backslashEscapeCDMString(fld.name,".")); StructureMembers nested_sm = createStructureMembers(nested_utype,partfqn.toString()); m.setStructureMembers(nested_sm); } } sm.setStructureSize(userType.size); return sm; }